CI1.3 给定两个字符串,确定一个字符串重新排列后,能否变成另一个字符串
来源:互联网 发布:android精美界面源码 编辑:程序博客网 时间:2024/06/10 06:04
问题分析
- 首先确认变位词是否区分大小写【此次区分大小写】
- 确认是否要考虑空白字符
优化: 比较两个字符串时,只要长度不同,就不可能是变位词。
解法一:排序字符串
对两个变位词的字符的字符进行排序,然后比较排序后的字符串。
【注】非最优,但是简单易懂,通用
import java.util.Arrays;public class Main { public static void main(String[] args) { String s = "qwerzsdf htlo21234"; String t = "21234qw erzsdfhtlo"; System.out.println(permutation(s, t)); } public static boolean permutation(String s, String t) { if (s.length() != t.length()) { return false; } return sort(s).equals(sort(t)); } public static String sort(String s) { char[] content = s.toCharArray(); Arrays.sort(content); return new String(content); }}
解法二:检查两个字符串的各字符数是否相同
遍历字母表,计算每个字符出现的次数,然后比较这两个数组。
【注】需要核实字符集的大小,此处假设字符集为ASCII
public class Main { public static void main(String[] args) { String s = "qwerz sdfhtlo21234"; String t = "21234qw erzsdfhtlo"; System.out.println(permutation(s, t)); } public static boolean permutation(String s, String t) { if (s.length() != t.length()) { return false; } int[] letters = new int[256]; // 假设条件 char[] s_array = s.toCharArray(); for (char c : s_array) { letters[c]++; } for (int i = 0; i < t.length(); i++) { int c = (int) t.charAt(i); if (--letters[c] < 0) { return false; } } return true; }}
0 0
- CI1.3 给定两个字符串,确定一个字符串重新排列后,能否变成另一个字符串
- 小算法:给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串s首先
- 面试3之确定其中一个字符串的字符重新排列后,能否变成另一个字符串
- 确定两串乱序同构 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。 给定一个string stringA和一个
- 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。 给定一个string stringA和一个string stri
- 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。 给定一个string stringA和一个string stri
- 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。
- 【Java】编写程序,确定一个字符串s的字符重新排列后能否变成另一个字符串t
- 9.1数组与字符串(二)——两个字符串的中一个重新排列后,能否变成另一个字符串
- 【笔试】58、确定其中一个字符串的字符重新排列后,能否变成另外一个字符串
- 判断一个字符串的字符重新排列后,能否变成另一个字符串。
- 程序员面试金典1.3: 确定两个字符串中一个重排后,能否变成另一个字符串
- 一个字符串重新排列后是否可以变成另一个字符串
- 给定两个字符串,重新排列后,两个是否相等
- 程序员面试金典: 9.1数组与字符串 3判断一个字符串字符重新排列后是否可变成另一个字符串
- CCI 1.3 确定一个字符串重排列后,是否变成另一个字符串
- 给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换(容易)
- CI1.1 实现一个算法,确定一个字符串的所有字符是否全部不同。假使不允许使用额外的数据结构。
- 条款05
- android.view.WindowLeaked的解决办法
- 图
- C++构造函数与析构函数的调用顺序
- 混合型面向对象语言和纯面向对象语言
- CI1.3 给定两个字符串,确定一个字符串重新排列后,能否变成另一个字符串
- Android自定义动画
- Git学习——重要概念
- Java HashMap中在resize()时候的rehash,即再哈希法的理解
- 锁事
- Numpy学习(2):将cifar10/100数据文件读入到python数据结构(字典)中
- 一人 我编程累
- jenkins maven编译打包找不到依赖库的解决办法
- mysql 慢查询设置