引言:回文是一種具有鏡像對(duì)稱性的字符串,即它從左到右讀和從右到左讀是相同的?;匚目梢栽谖膶W(xué)、語言學(xué)、數(shù)學(xué)、計(jì)算機(jī)科學(xué)等領(lǐng)域中得到廣泛應(yīng)用。在計(jì)算機(jī)科學(xué)中,判斷一個(gè)字符串是否為回文是一項(xiàng)基本的算法挑戰(zhàn)。在本文中,我們將介紹三種常見的編程語言中用于判斷字符串是否為回文的算法,并對(duì)它們的時(shí)間復(fù)雜度和空間復(fù)雜度進(jìn)行分析。
正文:我們將分別介紹用C語言、Python和Java實(shí)現(xiàn)判斷字符串是否為回文的算法。
C語言實(shí)現(xiàn):
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
bool isPalindrome(char* s) {
int len = strlen(s);
for (int i = 0, j = len - 1; i < j; i++, j--) {
if (s[i] != s[j]) {
return false;
}
}
return true;
}
int main() {
char s[100];
printf("請(qǐng)輸入一個(gè)字符串:");
scanf("%s", s);
if (isPalindrome(s)) {
printf("%s 是回文字符串\n", s);
} else {
printf("%s 不是回文字符串\n", s);
}
return 0;
}
時(shí)間復(fù)雜度為O(n),空間復(fù)雜度為O(1)。
Python實(shí)現(xiàn):
def isPalindrome(s: str) -> bool:
i, j = 0, len(s) - 1
while i < j:
if s[i] != s[j]:
return False
i, j = i + 1, j - 1
return True
s = input("請(qǐng)輸入一個(gè)字符串:")
if isPalindrome(s):
print(f"{s} 是回文字符串")
else:
print(f"{s} 不是回文字符串")
時(shí)間復(fù)雜度為O(n),空間復(fù)雜度為O(1)。
Java實(shí)現(xiàn):文章來源:http://www.zghlxwxcb.cn/news/detail-769326.html
import java.util.Scanner;
public class Palindrome {
public static boolean isPalindrome(String s) {
int i = 0, j = s.length() - 1;
while (i < j) {
if (s.charAt(i) != s.charAt(j)) {
return false;
}
i++;
j--;
}
return true;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("請(qǐng)輸入一個(gè)字符串:");
String s = scanner.nextLine();
if (isPalindrome(s)) {
System.out.printf("%s 是回文字符串\n", s);
} else {
System.out.printf("%s 不是回文字符串\n", s);
}
}
}
時(shí)間復(fù)雜度為O(n),空間復(fù)雜度為O(1)。文章來源地址http://www.zghlxwxcb.cn/news/detail-769326.html
到了這里,關(guān)于判斷字符串是否為回文的三種常用編程語言實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!