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;
}
};