字符串相关题目
来源:互联网 发布:58上面网络销售可靠吗 编辑:程序博客网 时间:2024/05/21 09:08
一、判断两个字符串str1和str2,是否互为旋转词
(字符串str左边任意长度的子串挪到右边:“1234”的旋转词有1234、2341、3412、4123)。
时间复杂度为O(n)
做法:(1)判断两字符串长度是否相等
(2)长度相等,生成str1+str1的大字符串(大字符串包含了str1的所有旋转词)
(3)在大字符串中寻找是否包含str2,可以KMP算法,但本例子没有
public static boolean circle(String s1,String s2){if(s1.length()!=s2.length()) return false;String s=s1+s1;for(int i=0;i<s2.length();i++){String subString=s.substring(i,s2.length()+i);if(s2.equals(subString)) return true;}return false;}
二、给定一个字符串str,请在单词间做逆序调整
例子:“pig loves dog”-->“dog loves pig”.
”I’m a student”-->”student a I’m”
思路:(1)字符串局部所有字符逆序函数f :比如 “abc def”->”fed cba”
(2)转化成各单词,调用f函数再逆序 “def” abc
思路2:string-->string[] ,对数组元素逆序
三、字符串str,str[0...i]移到右侧,str[i+1...N-1]移到左侧,要求时间复杂度O(n),空间复杂度O(1)。 例子:abcde, i=2-->deabc
思路:题目要求空间复杂度O (1),所以不能用字符串连接来做。利用题2中的逆序函数f原地调整。
(1)0...i,逆序:cbade
(2)i+1..n-1逆序:cbaed
(3)整体逆序:deabc
四、字符串数组strs[],找到拼接顺序,使所有str拼接组成的大字符串是字典顺序最小的,返回大字符串。比如:abc,de,-->应该是abcde不是deabc。b,ba-->应该是bab不是bba。
最优解的时间复杂度O(nlogn),
其实是一种排序的实现。类似于把数组排成最小的数。
思路:如果字典顺序是str1+str2<str2+str1,那么str1要排在str2之后。
(1)对于给定的数组排序,自定义比较器Comparator,并实现compareTo()方法来比较两个元素之间的大小,(由于str1+str2和str2+str1长度相同的两个字符串,他们的比较就是比较他们的字典序,使用String已有的conpareTo()比较,其原理还是逐个比较ascii码,由于ascii码的顺序和字典序相同)
(2)使用排序的类库Arrays.sort(new Comparator());最终将最小排序下的元素拼接成为字符串就是字典序最小的字符串。
class MyComparator implements Comparator<String>{public int compare(String str1,String str2){String s1=str1+str2;String s2=str2+str1;return s1.compareTo(s2);}}
public static String smallestStr(String[] strs,int n){if(strs==null||strs.length==0) return null;if(strs.length==0) return "";Arrays.sort(strs,new MyComparator());StringBuilder sbBuilder=new StringBuilder();for(int i=0;i<strs.length;i++){sbBuilder.append(strs[i]);}return sbBuilder.toString();}
- 字符串相关题目
- 字符串相关题目
- 字符串相关练习题目
- 编程题目C++字符串相关
- 华为上机-字符串相关题目
- 和字符串相关的几个面试题目
- 字符串相关类型题目及其实现
- 字符串中字符出现次数的相关题目
- 几个字符串相关的题目,来自LeetCode和LintCode
- String相关题目(左移字符串、翻转单词序列)
- 字符串题目
- 字符串题目
- 面试题42—相关题目(字符串的左旋转)
- Fibonacci相关题目
- java面试相关题目
- ASP.NET相关题目
- 数据结构相关经典题目
- 项目风险管理相关题目
- log4j2 支持彩色日志
- windows10下安装tensorflow
- C#Windows服务
- 【Intellij IDEA】设置 jdk 版本
- 2017年18岁的北京文科状元父母都是外交官,关于高考,他说出了我们竭力回避的戳心真相
- 字符串相关题目
- 正态分布/BP算法—笔记
- 11.7-全栈Java笔记:如何实现线程同步
- 浏览器渲染页面原理
- 秒变配色高手!怎么都不会错的6条网页设计配色原则
- 【C++】构造拷贝构造的 N 中调用情况
- 在Ubuntu 14.04.2 LTS上安装Qt
- java网络编程之application/x-www-form-urlencoded MIME
- Apache Jmeter入门