使用字符数组实现字符串逆序操作。

使用字符数组实现字符串逆序操作。

   public static String reverseStr(String str) {

          char[] ch = str.toCharArray();

          for(int i=0;ilength/2;i++) {

                 char temp;

                 temp = ch[i];

                                        ;

                                        ;

          }

          return new String(ch);

   }

该回答引用GPT:
使用字符数组实现字符串逆序操作:

public static String reverseStr(String str) {
    char[] ch = str.toCharArray();
    for(int i=0;i<ch.length/2;i++) {
        char temp;
        temp = ch[i];
        ch[i] = ch[ch.length-1-i];
        ch[ch.length-1-i] = temp;
    }
    return new String(ch);
}

如还有疑问,可留言帮助解决。


public static String reverseString(String s) {
    char[] chars = s.toCharArray();
    int left = 0;
    int right = chars.length - 1;
    while (left < right) {
        // 交换左右指针所指向的元素
        char temp = chars[left];
        chars[left] = chars[right];
        chars[right] = temp;
        // 移动左右指针
        left++;
        right--;
    }
    return new String(chars);
}
  • 这篇文章讲的很详细,请看:如何判断链表是否存在环?
  • 除此之外, 这篇博客: 动态规划解决斐波那契数列问题中的 解题思路: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 斐波那契数列的定义是 f(n + 1) = f(n) + f(n - 1),生成第 n项的做法有以下几种:

    • 递归法:
      原理: 把 f(n)问题的计算拆分成 f(n-1) 和 f(n-2)两个子问题的计算,并递归,以f(0)和f(1) 为终止条件。
      缺点: 大量重复的递归计算,例如 f(n)和 f(n - 1)两者向下递归需要 各自计算 f(n - 2) 的值。

    • 记忆化递归法:
      原理: 在递归法的基础上,新建一个长度为 n 的数组,用于在递归时存储 f(0)至 f(n)的数字值,重复遇到某数字则直接从数组取用,避免了重复的递归计算。
      缺点: 记忆化存储需要使用 O(N)的额外空间。

    • 动态规划:
      原理: 以斐波那契数列性质 f(n + 1) = f(n) + f(n - 1)为转移方程。
      从计算效率、空间复杂度上看,动态规划是本题的最佳解法。

    下图帮助理解递归法的 “重复计算” 概念。

    在这里插入图片描述

  • 您还可以看一下 传智老师的多角度带你编写更规范的黑盒测试用例课程中的 等价类设计测试用例的步骤小节, 巩固相关知识点