您的位置:首页 > 职场人生

字符串处理面试题-华为等公司java(1)

2014-08-06 19:05 429 查看
package simple;

import java.util.Scanner;

public class StringDeal {

public static void main(String[] args) {
Scanner scann = new Scanner(System.in);
String s = scann.nextLine();
String d = compressStr(s);
System.out.println(d);
System.out.print(d.length());
System.out.println(strstrp(s,"bbc"));

}
/**
* 功能:压缩字符串(aaabbccc --> a3b2c3)
* @param String:s
* @return
* @author xjp
*/
public static String compressStr(String s){
char[] c = s.toCharArray();
char[] tmp = new char[2*c.length];
tmp[0] = c[0];
int j=1,k=1;
for(int i=1;i<c.length;i++){
if(c[i] != c[i-1]){
char[] ktmp = String.valueOf(k).toCharArray();
for(int t=0; t<ktmp.length; t++){
tmp[j]= ktmp[t];
j++;
}
tmp[j] = c[i];
k=1;
j++;
}else{
k++;
continue;
}
}
char[] ktmp = String.valueOf(k).toCharArray();
for(int t=0; t<ktmp.length; t++){
tmp[j]= ktmp[t];
j++;
}
String newstr = String.valueOf(tmp, 0, j);
return newstr;
}
/**
* 功能:求主串中字符子串的位置以后的子串(fffggbbckkll bbc --> bbckkll)
* @param Stirng:str
* @param String:sub
* @return
* @author xjp
*/
public static String strstrp(String str,String sub){
for(int i=0; i<str.length();i++){
int j=0;
int tmp=i;
if(str.charAt(i)==sub.charAt(j)){
while(str.charAt(i)==sub.charAt(j)){
if(sub.length()==(j+1)) return str.substring(i-j);
i++;
j++;
}
i=tmp;
}
}
return null;
}
/**
* 功能:倒数m个字符,移动字符串(ABCDEFGHI,M=3 --> GHIABCDEF)
* @param ss
* @param M
* @return
* @author xjp
*/
public static String moveStr(String ss,int M){
char[] s = ss.toCharArray();
int i = 0;
char tmp;
int len = s.length;
if(M>len) M = len;
while(len>M){
for(i=0,tmp=s[0],M++;i<len-1;i++){ //整个字符左移一次
s[i] = s[i+1];
}
s[len-1]=tmp;
}
String news = String.valueOf(s);
return news;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: