- 两种方式,第一,通过指针;第二,通过数组下标
- void LoopMove(char * l,char * r)
- {
- char temp;
- while(l<r)
- {
- temp = *l;
- *l = *r;
- *r = temp;
- ++l;
- --r;
- }
- }
- void ReverseStr(char * str)
- {
- char *l,*r;
- r = str;
- l = str;
- LoopMove(l,r+strlen(str)-1);
- while(*r!='\0')
- {
- l = r+1;
- r = l;
- while(*r!=' ' && *r!='\0')
- ++r;
- r = r-1;
- LoopMove(l,r);
- l = r+1;
- r = l;
- }
- }
- int main()
- {
- char str[]="i come from tianjin.";
- cout<<strlen(str)<<endl;
- ReverseStr(str);
- cout<<str<<endl;
- return 0;
- }
- public class StrReverse {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- String str="hello i tianjin.";
- char []s = str.tocharArray();
- reverseWord(s);
- System.out.println(new String(s));
- }
- public static void reverseWord(char []s){
- int l = 0;
- int r = 0;
- reverse(s,l,r+s.length-1);
- for(int i=0; i<=s.length;++i){
- if(i==(s.length)||s[i]==' '){//注意顺序,否则越界错误
- r = i-1;
- System.out.println(l+" "+r);
- reverse(s,r);
- System.out.println(new String(s));
- l = i+1;
- }
- }
- }
- public static void reverse(char []s,int l,int r){
- char temp;
- for(int i=0; i<=(r-l)/2; i++)
- {
- temp = s[l+i];
- s[l+i] = s[r-i];
- s[r-i] = temp;
- }
- }
- }