java中简单的字符压缩实现,aaabbcccd压缩成3a2b3c1d

在群里看到的一个面试题,说有一串 aaaabbcccddee 字符 需要压缩 变成3a2b3c2d2e。

大伙也讨论了些方法,我觉得不太靠谱,于是按照自己的想法写了个简单的算法来实现。由于时间有限也没有过多的去研究,不知道还能不能再优化,或者有没有其他更优的办法。

public static void main(String[] args) {
	String str = "aaaabbcccddddddee";
	char[] strArry = str.toCharArray();
	int index = 0;
	String mb = String.valueOf(strArry[0]);
	String rs = "";
	for(char c :strArry){
		if(mb.equals(String.valueOf(c))){
			index ++;
		}else{
			rs += index + mb;
			mb = String.valueOf(c);
			index =1;
		}
	}
	rs += index + mb;
	System.out.println("压缩前的字符串:"+str);
	System.out.println("压缩后的字符串:"+rs);
}


以下是使用Java打印十六进制编码ASCII字符集的代码: ```java public class AsciiHexPrint { public static void main(String[] args) { for (int i = 0; i < 128; i++) { System.out.printf("%3d: 0x%02X %c\n", i, i, (char) i); } } } ``` 输出结果如下: ``` 0: 0x00 1: 0x01 2: 0x02 3: 0x03 4: 0x04 5: 0x05 6: 0x06 7: 0x07 8: 0x08 9: 0x09 10: 0x0A 11: 0x0B 12: 0x0C 13: 0x0D 14: 0x0E 15: 0x0F 16: 0x10 17: 0x11 18: 0x12 19: 0x13 20: 0x14 21: 0x15 22: 0x16 23: 0x17 24: 0x18 25: 0x19 26: 0x1A 27: 0x1B 28: 0x1C 29: 0x1D 30: 0x1E 31: 0x1F 32: 0x20 33: 0x21 ! 34: 0x22 " 35: 0x23 # 36: 0x24 $ 37: 0x25 % 38: 0x26 & 39: 0x27 &#39; 40: 0x28 ( 41: 0x29 ) 42: 0x2A * 43: 0x2B + 44: 0x2C , 45: 0x2D - 46: 0x2E . 47: 0x2F / 48: 0x30 0 49: 0x31 1 50: 0x32 2 51: 0x33 3 52: 0x34 4 53: 0x35 5 54: 0x36 6 55: 0x37 7 56: 0x38 8 57: 0x39 9 58: 0x3A : 59: 0x3B ; 60: 0x3C < 61: 0x3D = 62: 0x3E > 63: 0x3F ? 64: 0x40 @ 65: 0x41 A 66: 0x42 B 67: 0x43 C 68: 0x44 D 69: 0x45 E 70: 0x46 F 71: 0x47 G 72: 0x48 H 73: 0x49 I 74: 0x4A J 75: 0x4B K 76: 0x4C L 77: 0x4D M 78: 0x4E N 79: 0x4F O 80: 0x50 P 81: 0x51 Q 82: 0x52 R 83: 0x53 S 84: 0x54 T 85: 0x55 U 86: 0x56 V 87: 0x57 W 88: 0x58 X 89: 0x59 Y 90: 0x5A Z 91: 0x5B [ 92: 0x5C \ 93: 0x5D ] 94: 0x5E ^ 95: 0x5F _ 96: 0x60 ` 97: 0x61 a 98: 0x62 b 99: 0x63 c 100: 0x64 d 101: 0x65 e 102: 0x66 f 103: 0x67 g 104: 0x68 h 105: 0x69 i 106: 0x6A j 107: 0x6B k 108: 0x6C l 109: 0x6D m 110: 0x6E n 111: 0x6F o 112: 0x70 p 113: 0x71 q 114: 0x72 r 115: 0x73 s 116: 0x74 t 117: 0x75 u 118: 0x76 v 119: 0x77 w 120: 0x78 x 121: 0x79 y 122: 0x7A z 123: 0x7B { 124: 0x7C | 125: 0x7D } 126: 0x7E ~ 127: 0x7F ``` 以上代码使用了循环来遍历ASCII字符集中的所有字符,通过使用`printf`方法打印出每个字符的十进制值、十六进制值和字符本身。注意,要将整数值强制转换字符,以便打印出字符本身。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值