给定两个由小写字母构成的字符串 A 和 B 。 只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。 复制代码
示例:
输入: A = "ab", B = "ba" 输出: true 输入: A = "ab", B = "ab" 输出: false 输入: A = "aa", B = "aa" 输出: true 输入: A = "aaaaaaabc", B = "aaaaaaacb" 输出: true 输入: A = "", B = "aa" 输出: false 复制代码
思考:
这道题首先判断两个字符串长度是否相等,长度不相等不可能是亲密字符串。 长度相等时,再比较两个字符串是否相等。 两个字符串相等:则查找在A或者B中是否有相同字符出现,有则是亲密字符串,没有就不是亲密字符串。 两个字符串不相等:先遍历记录不相等的字符个数和位置。不相等的字符数不等于2就不是亲密字符串。 不相等的字符数等于2:A交换这两个字符,再与B比较,相等就是亲密字符串。 复制代码
实现:
class Solution {
public boolean buddyStrings(String A, String B) {
//比较长度
if (A.length() != B.length()) {
return false;
}
//字符串是否相等
if (A.equals(B)) {
//相等判断是否有重复字符
for (int count = 0; count < A.length(); count++) {
if (A.indexOf(A.charAt(count), count + 1) != -1) {
//有重复字符返回true
return true;
}
}
//没有返回false
return false;
} else {//字符串不相等
//记录不相等字符出现次数
int time = 0;
//记录不相等字符位置
List<Integer> pos = new ArrayList<>();
for (int count = 0; count < A.length(); count++) {
if (A.charAt(count) != B.charAt(count)) {
time++;
pos.add(count);
}
}
//次数不等于2 不是亲密字符串
if (time !=2) {
return false;
} else {
//等于2交换字符后再次比较
return swap(A, pos.get(0), pos.get(1)).equals(B);
}
}
}
private String swap(String str, Integer pos1, Integer pos2) {
char[] charArray = str.toCharArray();
char temp = charArray[pos1];
charArray[pos1] = charArray[pos2];
charArray[pos2] = temp;
return new String(charArray);
}
}复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 查找一个字符串中最长不含重复字符的子字符串,计算该最长子字符串的长度
- 字符串、字符处理总结
- 高频算法面试题(字符串)leetcode 387. 字符串中的第一个唯一字符
- php删除字符串最后一个字符
- (三)C语言之字符串与字符串函数
- 算法笔记字符串处理问题H:编排字符串(2064)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
企业IT架构转型之道:阿里巴巴中台战略思想与架构实战
钟华 / 机械工业出版社 / 2017-4-1 / 79
在当今整个中国社会都处于互联网转型的浪潮中,不管是政府职能单位、业务规模庞大的央企,还是面临最激烈竞争的零售行业都处于一个重要的转折点,这个转折对企业业务模式带来了冲击,当然也给企业的信息中心部门带来了挑战:如何构建IT系统架构更好地满足互联网时代下企业业务发展的需要。阿里巴巴的共享服务理念以及企业级互联网架构建设的思路,给这些企业带来了不少新的思路,这也是我最终决定写这本书的最主要原因。本书从阿......一起来看看 《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》 这本书的介绍吧!