当前位置: 代码迷 >> J2SE >> 对字符串的操作标题
  详细解决方案

对字符串的操作标题

热度:85   发布时间:2016-04-23 19:38:36.0
对字符串的操作题目
编写一个方法,将字符串中所有相同的字符提取出来,构成一个新的字符串;
例如,一串字符串“aabcdefdsaxk”,要求实现将该字符串转换为“3abc2defsxk”
请写入该方法的完整实现代码。。。。

好难啊 写了几个都不对。
------解决思路----------------------
准备两数组即可,一个放字母,一个放对应的个数

import java.util.Arrays;

public class TestF {
public static void main(String[] args) {
String string = "aabcdefdsaxk";
char[] chars = string.toCharArray();
//存放不重复的字符,默认为0
char[] char1 = new char[chars.length];
//存放对应字符的个数,默认为0
int[] int1 =new int[chars.length];
for (int i = 0; i < chars.length; i++) {
for (int j = 0; j < char1.length; j++) {
if (chars[i] == char1[j] 
------解决思路----------------------
 char1[j] == 0) {
char1[j] = chars[i];
int1[j]++;
break;
}
}
}
System.out.println(Arrays.toString(char1));
System.out.println(Arrays.toString(int1));
//条件输出
for (int i = 0; i < int1.length; i++) {
if (int1[i] != 0 && int1[i] != 1) {
System.out.print(int1[i]);
}
if (char1[i] != 0) {
System.out.print(char1[i]);
}

}
}

}

------解决思路----------------------

public class H {
public static void main(String[] args) {
String s = "aabcdefdsaxk";
int i,j,l,c;
for(i=0,l=s.length();i<l;++i)
{
c=1;
for(j=0;j<i;++j)
{
if(s.charAt(i)==s.charAt(j))break ;
}
if(j<i)continue;
for(j=i+1;j<l;++j)
{
if(s.charAt(i)==s.charAt(j))++c;
}
if(c>1)System.out.print(c);
System.out.print(s.charAt(i));
}
System.out.println();
}
}
运行结果:
3abc2defsxk

------解决思路----------------------

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Test{
public static void main(String[] args){
String regex = "^\\w";
Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
String content = "aabcdefdsaxk";
Matcher matcher = pattern.matcher(content);
String result = "";
int lengthBefore = 0;
int lengthAfter = 0;
while(matcher.find()){
lengthBefore = content.length();
content = content.replaceAll(matcher.group(),"");
lengthAfter = content.length();
result += lengthBefore - lengthAfter + matcher.group();
matcher = pattern.matcher(content);
}

result = result.replace("1","");

System.out.println(result);
}
}
  相关解决方案