1、java 把字符串aaabba变成a3b2a1
public static void main(String[] args) {
String a = "aaabba";
String str = "";
int num = 1;
for (int i = a.length(); i > 0; i--) {
if (a.length() == 1) {
str += a.substring(0, 1) + num;
} else {
if (a.substring(1, 2).equals(a.substring(0, 1))) {
num++;
} else {
str += a.substring(0, 1) + num;
num = 1;
}
}
a = a.substring(1, a.length());
}
System.out.println(str);
}
2、输入一个数字, 输出该数字是有【2,4,8,16。。。】中的其中2个和,例如 6=2+4,66=64+2;
public static void main(String[] args) {
int a = 64;
//转为二进制
String str = Integer.toBinaryString(a);
while (str.length() > 0) {
String num = str.substring(0, 1);
if ("1".equals(num)) {
System.out.println(Math.pow(2, str.length() - 1));
}
str = str.substring(1, str.length());
}
}
3、根据每个数据的长度,生成有序的数组,如下:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[11, 12, 13, 14, 15]
[16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
public static void main(String[] args) {
List<Card> cardList = Arrays.asList(new Card(10), new Card(5), new Card(10));
Integer max = 1;
for (Card card : cardList) {
//range()产生一个区间内的有序流。
IntStream intStream = IntStream.range(max, max + card.getIpSize() + 1)
//截取前面多少个元素。
.limit(card.getIpSize());
max += card.getIpSize();
System.out.println(Arrays.toString(intStream.toArray()));
}
}
static class Card {
private Integer ipSize;
public Card(Integer ipSize) {
this.ipSize = ipSize;
}
public Integer getIpSize() {
return ipSize;
}
public void setIpSize(Integer ipSize) {
this.ipSize = ipSize;
}
}