目录
1.最长公共前缀
题目描述
给你一个大小为 n 的字符串数组 strs ,其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。
示例
输入:["abca","abc","abca","abc","abcc"]
返回值:"abc"
输入:["abc"]
返回值:"abc"
分析
可以先拿第一个字符串与后面的字符串找公共字符串,找到后更新字符串,如果没找到返回"",一直与数组中的所有字符串对比。最后剩下的即为公共字符串。
java代码
import java.util.*;
public class Solution {
/**
*
* @param strs string字符串一维数组
* @return string字符串
*/
public String longestCommonPrefix (String[] strs) {
// write code here
if(strs==null||strs.length==0){
return "";
}
String index=strs[0];
for(int i=1;i<strs.length;i++){
if(index.length()==0){
return "";
}
index = getCommonStr(index,strs[i]);
}
return index;
}
public String getCommonStr(String s1,String s2){
int len=Math.min(s1.length(),s2.length());
int temp=0;
while(temp<len&&s1.charAt(temp)==s2.charAt(temp)){
temp++;
}
return s1.substring(0,temp);
}
}
2.字符串变形
题目描述
对于一个长度为 n 字符串,我们需要对它做一些变形。首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。比如"Hello World"变形后就变成了"wORLD hELLO"。
输入描述:
给定一个字符串s以及它的长度n(1 ≤ n ≤ 10^6)
返回值描述:
请返回变形后的字符串。题目保证给定的字符串均由大小写字母和空格构成。
示例
输入:"This is a sample",16
返回值:"SAMPLE A IS tHIS"
分析
1.将字符串的大写变小写,小写变大写
2.反转整个字符串(可以用栈)
3.反转每个单词
java代码
import java.util.*;
public class Solution {
public String trans(String s, int n) {
// write code here
if(s==null||s.length()==0) return s;
StringBuffer res=new StringBuffer();
for(int i=0;i<n;i++){
if(s.charAt(i)<='Z'&&s.charAt(i)>='A'){
res.append((char)(s.charAt(i)-'A'+'a'));
}else if(s.charAt(i)<='z'&&s.charAt(i)>='a'){
res.append((char)(s.charAt(i)-'a'+'A'));
}else{
res.append(s.charAt(i));
}
}
res=res.reverse();
for(int i=0;i<n;i++){
int index=i;
while(index<n&&res.charAt(index)!=' '){
index++;
}
String temp=res.substring(i,index);
StringBuffer buffer=new StringBuffer(temp);
temp=buffer.reverse().toString();
res.replace(i,index,temp); //替换
i=index;
}
return res.toString();
}
}