输入一串字符,请编写一个字符串压缩程序,将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串。 例如: aac 压缩为 1ac xxxxyyyyyyzbbb 压缩为 3x5yz2b
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String str = sc.nextLine(); char[] ch = str.toCharArray(); for(int i = 0;i < ch.length;i++){ int count = 0; while(i < ch.length - 1 && ch[i] == ch[i+1]){ count++; i++; } if(count != 0){ System.out.print(count); } System.out.print(ch[i]); } System.out.println(); } }
/* 思路二:不断寻找每次字符重复的情况,然后将它导入到StringBuffer中 */ import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); StringBuffer sb = new StringBuffer(); for(int i = 0,eindex = 0;i<str.length();){ char ch = str.charAt(i); int count = 0; while(eindex < str.length() && ch==str.charAt(eindex)){ count++; eindex++; } if(count==1) sb.append(ch); else sb.append(count - 1).append(ch); i = eindex; } System.out.println(sb.toString()); } }
import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(br.readLine()); sb.append('#'); StringBuilder res = new StringBuilder(); int count = 1; for (int i = 0; i < sb.length() - 1; i++) { if (sb.charAt(i) == sb.charAt(i + 1)) { count++; } else { if (count > 1) { res.append(count - 1); } res.append(sb.charAt(i)); count = 1; } } System.out.println(res.toString()); } }
import java.util.Scanner;
public class Condense { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入字符串:"); String s = scanner.nextLine(); getNumFromString(s);
} private static void getNumFromString(String string) { StringBuilder sb = new StringBuilder(); char c = string.charAt(0); int count = 1; for (int i = 1; i < string.length(); i++) { char s = string.charAt(i); if (s == c) { count++; } else { if (count > 1) { sb.append(count); sb.append(c); count = 1; } else { sb.append(c); } } c = s; } sb.append(c); System.out.println(sb.toString()); }
}