欢迎访问宙启技术站
智能推送

Java 函数:如何判断一个字符串是否为回文字符串?

发布时间:2023-05-30 03:31:07

一个回文字符串就是从左往右读和从右往左读都一样的字符串。例如“level”、“racecar”、“rotator”等都是回文字符串。

如何在 Java 编程语言中判断一个字符串是否为回文字符串呢?下面是一种简单的实现方式:

1. 首先,我们需要编写一个函数,命名为 isPalindrome,该函数输入一个字符串,返回一个布尔值。

2. 在函数体内,我们需要将输入的字符串转换为全部小写,以去除对大小写的敏感。

3. 然后,我们再定义两个指针:一个指向字符串的头部,一个指向字符串的尾部。这里我们使用两个整数变量分别表示两个指针的位置,并分别初始化为字符串的 个字符和最后一个字符的位置。

4. 接下来,我们使用一个循环来比较两个指针指向的字符是否相等。循环条件是头部指针的位置小于尾部指针的位置。

5. 在循环中,每次比较两个指针指向的字符是否相等。如果相等,就将头部指针后移,尾部指针前移。如果不相等,就说明字符串不是回文字符串,直接返回 false。

6. 如果循环结束了,说明字符串是回文字符串,返回 true。

下面是代码实现:

   //将输入字符串全部转换为小写
   str = str.toLowerCase();
   
   //定义头部指针和尾部指针
   int left = 0;
   int right = str.length() - 1;
   
   //逐个比较字符是否相等
   while (left < right) {
       //如果两个指针指向的字符不相等,直接返回 false
       if (str.charAt(left) != str.charAt(right)) {
           return false;
       }
       
       //移动指针
       left++;
       right--;
   }
   
   //所有字符都比较过了,说明字符串是回文字符串
   return true;
 }

测试代码如下:

   //测试回文字符串
   System.out.println(isPalindrome("level"));       //true
   System.out.println(isPalindrome("racecar"));     //true
   System.out.println(isPalindrome("rotator"));     //true
   System.out.println(isPalindrome("abba"));        //true
   System.out.println(isPalindrome("Able ,wLeeba"));             //true

   //测试非回文字符串
   System.out.println(isPalindrome("Hello, world!"));//false
   System.out.println(isPalindrome("Java is cool")); //false
 } 

输出结果如下:

true

true

true

true

true

false

false

这种实现方式时间复杂度为 O(n),其中 n 是输入字符串的长度。