力扣(LeetCode)125. 驗證迴文串

##給定一個字符串,驗證它是不是迴文串,只考慮字母和數字字符,能夠忽略字母的大小寫。java

說明:本題中,咱們將空字符串定義爲有效的迴文串。app

示例 1:函數

輸入: "A man, a plan, a canal: Panama" 輸出: trueui

示例 2:spa

輸入: "race a car" 輸出: falsecode

java知識點

Java 字符串拼接,推薦使用StringBuilder

String 自己沒有反轉函數 ,可是StringBuilder有 reverse()

String s = "abcd";

StringBuilder builder = new StringBuilder(s);

System.out.println(builder.reverse().toString()); // 輸出 dcba

##Java版blog

class Solution {
    public boolean isPalindrome(String s) {
        s = s.toLowerCase(); //所有轉換爲小寫
        // 使用String 拼接,若是單詞太多的話,會提示時間超時,使用StringBuilder就不會。
        StringBuilder builder = new StringBuilder();
        int i,len = s.length();
        //變成只有小寫字母和數字的字符串
        for(i=0;i<len;i++) {
            char c = s.charAt(i);
            if((c>='0' && c<='9') || (c>='a' && c<='z')) {
                builder.append(c);
            }
        }
        return builder.toString().equals(builder.reverse().toString());
    }
}

C語言知識點

C語言 strlen() tolower() toupper()

char c[]="aBc";

int len = strlen(c); // len長爲3

tolower(c); // "aBc" 變成 "abc"

toupper(c); // "aBc" 變成 "ABC"

##C語言版字符串

bool isPalindrome(char* s) {
    int i,k=0,len =strlen(s);
    char *ss = (char *)malloc(sizeof(char)*len);
    //拼接一個只有小寫字母和數字的字符串
    for(i=0;i<len;i++) {
        if((s[i]>='0' && s[i]<='9') || (tolower(s[i])>='a' && tolower(s[i])<='z' )) {
            ss[k++]=tolower(s[i]);
        }
    }
    //判斷是否迴文
    for(i=0;i<k/2;i++) {
        if(ss[i]!=ss[k-i-1]) {
            return false;
        }
    }
    return true;
}

##運行結果 io

相關文章
相關標籤/搜索