1.給定兩個由小寫字母構成的字符串 A 和 B ,只要我們可以通過交換 A 中的兩個字母得到與 B 相等的結果,就返回 true ;否則返回 false 。
示例 1:
輸入: A = "ab", B = "ba"
輸出: true
示例 2:
輸入: A = "ab", B = "ab"
輸出: false
示例 3:
輸入: A = "aa", B = "aa"
輸出: true
示例 4:
輸入: A = "aaaaaaabc", B = "aaaaaaacb"
輸出: true
示例 5:
輸入: A = "", B = "aa"
輸出: false
class Solution{
public static boolean buddyStrings(String A, String B) {
int lenA = A.length();
int lenB = B.length();
int count = 0;//統計AB 兩個字符串裏面包含多少不一樣的字符
if(lenA == lenB){
if(lenA == 0){
return false;
}
char tmp;
int[] t = new int[3]; // 如果A與B不相等的字符個數超過兩個就退出
int k = 0;
for(int i = 0;i<lenA;i++){
if(A.charAt(i) != B.charAt(i)){
count++;
t[k++] = i;
if(k==3){
break;
}
}
}
if(count == 2 ){// A與B中包含不相等的字符有兩個,就把這個部分拿出來,換位置比較
String str1 = A.substring(t[0], t[0]+1)+A.substring(t[1], t[1]+1);
String str2 = B.substring(t[1], t[1]+1)+B.substring(t[0], t[0]+1);
if(str1.equals(str2)){
return true;
}else{
return false;
}
}else if(count == 0){//如果兩個字符串相等,判斷裏面有沒用重複的元素
char[] elements = A.toCharArray();
for(char e:elements){
if(A.indexOf(e)!=A.lastIndexOf(e)){
return true;
}
}
return false;
}else{
return false;
}
}
return false;
}
}
2.給定一個僅包含大小寫字母和空格 ' ' 的字符串 s,返回其最後一個單詞的長度。如果字符串從左向右滾動顯示,那麼最後一個單詞就是最後出現的單詞。
如果不存在最後一個單詞,請返回 0 。說明:一個單詞是指僅由字母組成、不包含任何空格字符的 最大子字符串。
class Solution {
public int lengthOfLastWord(String s) {
int len = s.length();
if(len > 0){
String[] ss = s.split(" ");//使用split函數,並且判斷字符串數組是否爲空
if(ss.length > 0){
return ss[ss.length-1].length();
}else{
return 0;
}
}
return 0;
}
}