1. 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。
String content = "张逢杰zfj小朱xz330329“;
HashMap map = new HashMap();
for(int i=0;i<cotent.length;i++){
char c = content.charAt(i);
Integer num = map.get(c);
if(num == null)
num = 1;
else
num = num + 1;
map.put(c.num);
}
for(Map.EntrySet entry : map){
sout(entry.getkey()+"."+entry.getValue());
}
2. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截 取的字符串,但要保证汉字不被截取半个,如“我 ABC”,4,应该截取“我 AB”
public static void main(String[] args) throws Exception{
String str = "张逢杰 ZFJ";
int num = trimGBK(str.getBytes("GBK"),5);
System.out.println(str.substring(0,num));
}
public static int trimGBK(byte[] buf,int n){
int num = 0;
boolean bChineseFirstHalf = false;
for(int i=0;i<n;i++){
if(buf[i]<0 && !bChineseFirstHalf)
bChineseFirstHalf = true;
else{
num++;
bChineseFirstHalf = false;
}
}
return num;
}
3. 递归算法,一个整数大于零,按照n,2n,4n,8n,的顺序递增输出,当值大于100,再递减输出。
例如:n = 20;
输出:
20,
40,
80,
160,
160,
80,
40,
20,
public static void doubleNum(int n){
System.out.println(n);
if(n<=5000)
doubleNum(2*n);
System.out.println(n);
}
4. 第1个人10,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?(使用递归算法)
public class A{
public static void main(String[] args){
System.out.println(computeAge(8));
}
public static int computeAge(int n){
if(n == 1) return 10;
return compute(n-1)+2;
}
}
5. 有数组 a[n],用 java 代码将数组元素顺序颠倒
import java.util.Arrays;
public class SwapDemo{
public static void main(String[] args){
int [] a = new int[]{
(int)(Math.random()*1000),
(int)(Math.random()*1000),
(int)(Math.random()*1000),
(int)(Math.random()*1000),
(int)(Math.random()*1000)
};
System.out.println(a);
System.out.println(Arrays.toString(a));
swap(a);
System.out.println(Arrays.toString(a));
}
public static void swap(int a[]){
int len = a.length;
for(int i = 0;i<len/2;i++){
int temp = a[i];
a[i[=a[len-1-i];
a[len-1-i]=temp;
}
}
}