swift 字符串 - miaohy/MGMainProject GitHub Wiki

extension String {

var length: Int {
    return count
}

subscript (i: Int) -> String {
    return self[i ..< i + 1]
}

func substring(fromIndex: Int) -> String {
    return self[min(fromIndex, length) ..< length]
}

func substring(toIndex: Int) -> String {
    return self[0 ..< max(0, toIndex)]
}

subscript (r: Range<Int>) -> String {
    let range = Range(uncheckedBounds: (lower: max(0, min(length, r.lowerBound)),
                                        upper: min(length, max(0, r.upperBound))))
    let start = index(startIndex, offsetBy: range.lowerBound)
    let end = index(start, offsetBy: range.upperBound - range.lowerBound)
    return String(self[start ..< end])
}

}

let str = "abcdef" str[1 ..< 3] // returns "bc" str[5] // returns "f" str[80] // returns "" str.substring(fromIndex: 3) // returns "def" str.substring(toIndex: str.length - 2) // returns "abcd"

查找回文串个数 class Solution { func countSubstrings(s:String)->Int { var totalcount:Int = 0; for i in 0...(s.count - 1){ totalcount += checkcount(l: i, r: i, s: s) if (i == s.count - 1){ continue } totalcount += checkcount(l: i, r: i + 1, s: s) } return totalcount; }

func checkcount(l:Int, r:Int, s:String) ->Int {
    var cnt:Int = 0;
    var l:Int = l
    var r:Int = r;
    
    
    while(l >= 0 && r < s.count && s[l..<l+1] == s[r..<r+1]){
        l -= 1;
        r += 1;
        cnt += 1;
    }
    return cnt;
}

};

⚠️ **GitHub.com Fallback** ⚠️