反转C样式字符串

Reverse a C-style string

本文关键字:字符串 样式 反转      更新时间:2023-10-16

编写代码来反转C样式字符串。(C样式字符串表示"abcd"由五个字符表示,其中包括空字符。)没有打印出任何内容。为什么?

void ReverseString(char *p){
    int length = strlen(p);
    for (int i = 0, j = length; i < j; i++, j--){
        swap(p[i], p[j]);
    }
}

int main()
{
    char a[] = "12345";
    ReverseString(a);
    cout << a;
    system("pause");
    return 0;
}

将字符串末尾的''终止符换到最开始的位置。因此,打印直到找到第一个字符的cout不打印任何内容。使用j = length - 1将其排除。

但更好的是:这已经在标准库中实现了:

void ReverseString(char *p) {
   std::reverse(p, p + std::strlen(p));
}

在手工编写的代码上使用算法通常是一个很好的主意,因为它不太容易出错,而且通常更高效。

public class Reverse {
  public static void main(String[] args) {
    StringBuffer s = new StringBuffer("Xmen Logan");
    s.append('');
    System.out.println("C-style string---" + s);
    reverse(s);

  }
  public static void reverse(StringBuffer s) {
  int length = s.length();
  char[] chars = new char[length];
  int j = 0;
  for(int i = length-1; i>=0; i--) {
    chars[j++] = s.charAt(i);
  }
  String reverseString = new String(chars);
  System.out.println("Reverse String ------" + reverseString);
}
}