两种方式,第一,通过指针;第二,通过数组下标
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, l, 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;
}
}
}