每日算法(数组与字符串)
来源:互联网 发布:js鼠标滚动条事件 编辑:程序博客网 时间:2024/05/17 22:56
1、确定一个字符串的所有字符是否全都不同,假定字符集为ASCII。
思考:首先确定字符串长度是否大于256,再创建一个大小为256的布尔型数组用来记录字符是否出现。
public boolean isUniqueChars(String str){ if(str.length()>256) return false; boolean[] char = new boolean[256]; for(int i=0;i<str.length();i++){ int val=str.charAt(i); if(char[val]){ return false; } char[val]=true; } return true;}
时间复杂度为O(n),n为字符串长度。空间复杂度为O(1)。
2、给定两个字符串,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
思考:
方法一:对两组字符串进行排序,如果顺序相同,则互为变位词。
public String sort(String s){ char[] content = s.toCharArray(); java.util.Arrays.sort(content); return new String(content);}public boolean permutation(String s, String t){ if(s.length()!=t.length()){return false; } return sort(s).equals(sort(t));}
方法二:检查两个字符串的各个字符数是否相同。
public boolean permutation(String s, String t){ if(s.length()!=t.length()){return false; } int[] letters = new int[256]; char[] counts = s.toCharArray(); for (char c : counts) {letters[c]++; } for (int i = 0; i < t.length(); i++) {int c = t.charAt(i);if(--letters[c]<0){ return false;} }return true;}
0 0
- 每日算法(数组与字符串)
- 每日算法(数组与字符串二)
- 每日一帖:数据结构与算法之字符串旋转
- 每日一帖:数据结构与算法之字符串包含
- 每日一帖:数据结构与算法之字符串转整数
- 数据结构与算法2:字符串与数组
- 数组与字符串相关的算法
- 由字符串生成数组-《数据结构与算法》
- 构造数组的MaxTree(每日一道算法题)
- (每日算法)leetcode--Text Justification(格式化字符串)
- 每日算法2:KMP字符串匹配算法
- 每日一题(10)—— 数组与指针
- 数据结构与算法,每日一道
- 每日一算法--java的16进制与字符串的相互转换函数
- 数据结构与算法复习(10)—— 后缀数组与字符串问题
- 每日算法(链表)
- 每日算法(一)
- 每日算法(二)
- 在C中如何使函数返回数组
- 日语学习之新版初级标准日本语-5 森さんは 七時に 起きます
- 第10周项目 2.2 传字条
- MySQL的触发器、存储过程与读写分离
- linux 下查看机器是cpu是几核的
- 每日算法(数组与字符串)
- 指针初识6(指针与多维数组)
- 第十周项目6-贪财的富翁
- 求小数的循环节
- POJ 1849 Two(遍历树)
- Java基础-将Bean属性值放入Map中
- using thymeleaf 之 th:each迭代循环
- 手写快速排序【随机数作基数】
- hdu 4771 Stealing Harry Potter's Precious(bfs+枚举)