判断一个字符串是否对称
时间: 2023-10-18 19:07:12 浏览: 66
可以使用双指针的方法,从字符串的两端开始向中间移动,判断左右两端的字符是否相等,如果不相等则不是对称的,否则继续移动指针。如果最终两个指针相遇,则字符串是对称的。
以下是Python的示例代码:
```
def is_symmetric(s):
left = 0
right = len(s) - 1
while left < right:
if s[left] != s[right]:
return False
left += 1
right -= 1
return True
```
这个函数接受一个字符串作为参数,返回一个布尔值表示该字符串是否对称。例如:
```
>>> is_symmetric("abcba")
True
>>> is_symmetric("abccba")
True
>>> is_symmetric("abc")
False
```
相关问题
判断一个字符串是否对称java
判断一个字符串是否对称是指判断一个字符串从左到右读和从右到左读是否完全一致。以下是两种实现方法:
1.使用循环遍历字符串的前一半,同时比较前一半和后一半对应位置的字符是否相同。如果有不同的字符,则该字符串不是对称字符串。
2.使用StringBuilder类中的reverse()方法将字符串倒序,然后与原字符串进行比较。如果两个字符串相同,则该字符串是对称字符串。
下面是第一种方法的Java代码实现:
```
public static boolean isSymmetric(String str) {
int len = str.length();
for (int i = 0; i < len / 2; i++) {
if (str.charAt(i) != str.charAt(len - i - 1)) {
return false;
}
}
return true;
}
```
下面是第二种方法的Java代码实现:
```
public static boolean isSymmetric(String str) {
StringBuilder sb = new StringBuilder(str);
return str.equals(sb.reverse().toString());
}
```
分治法判断一个字符串是否对称
分治法判断一个字符串是否对称的思路是将字符串分为左右两部分,分别判断左右两部分是否对称,如果左右两部分都对称,则整个字符串对称。具体实现可以采用递归的方式,将字符串不断分为左右两部分,直到只剩下一个字符或者没有字符,然后再逐层返回判断结果。如果左右两部分都对称,则返回true,否则返回false。这种方法的时间复杂度为O(nlogn)。
代码实现可以参考以下示例:
```
public static boolean isSymmetric(String s) {
if (s == null || s.length() == 0) {
return true;
}
return isSymmetricHelper(s, 0, s.length() - 1);
}
private static boolean isSymmetricHelper(String s, int left, int right) {
if (left >= right) {
return true;
}
if (s.charAt(left) != s.charAt(right)) {
return false;
}
return isSymmetricHelper(s, left + 1, right - 1);
}
```