JavaSE编码试题强化练习5
1.不使用函数实现字符串的翻转
/**
* 1.不使用函数实现字符串的翻转
*/
public class TestStringReverse {
public static void main(String[] args) {
String s1 = "FEDCBA";
System.out.println("翻转前:"+s1);
/**
* 此处需注意用s1接收方法的返回值,不然输出的还是没翻转之前的s1
*/
s1 = reverseI(s1);
System.out.println("方法I翻转后:"+s1);
s1 = reverseII(reverseII(s1));
System.out.println("方法II翻转后:"+s1);
} /**
* 方法I
*/
public static String reverseI(String str){
/**
* 实现思路:将字符串存入一个字符数组中,首尾交换,每交换一次起始位置+1,结束位置-1
* 调用toCharArray()方法,返回一个字符数组,方便通过下标取放字符,最终实现字符串的翻转
*/
char[] ch = str.toCharArray();
/**
* 定义起始和结束位置下标索引号
*/
int start = 0;
int end = ch.length - 1;
char temp;
while (start < end){
temp = ch[start];
ch[start] = ch[end];
ch[end] = temp;
start++;
end--;
}
/**
* public String(char value[]) 此方法实现传入一个字符数组,返回一个字符串
*/
String str0 = new String(ch);
return str0;
} /**
* 方法II
*/
public static String reverseII(String str){
/**
* 调用toCharArray()方法,返回一个字符数组,方便通过下标取放字符,最终实现字符串的翻转
*/
char[] ch = str.toCharArray();
/**
* 定义一个空字符串
*/
String str0 = "";
for (int i = 0; i < ch.length; i++) {
/**
* 此法 str0 = temp + str0 中temp和str0的顺序是不能调换的,这是关键
*/
char temp = ch[i];
str0 = temp + str0;
}
return str0;
}
}
运行结果:

2.给定一个字符串,如"yekmaakkccekymbvb",求字符串中有多少种字符以及每个字符的个数;把结果写入E盘名为TestIOStream.txt的文本文件中;读出刚才写入TestIOStream.txt文本文件的内容。
public class TestIOStream {
public static void main(String[] args) {
String str = "yekmaakkccekymbvb";
Map<String,Integer> map = count(str);
write(map);
read();
}
/**
* 求字符串中有多少种字符及每个字符的个数
*/
public static Map<String,Integer> count(String s){
Map<String,Integer> map = new LinkedHashMap<String,Integer>();
for (int i = 0;i < s.length();i++){
/**
* public String substring(int beginIndex, int endIndex) 截取字符串中的子串
* (前闭后开)
* substring(i,i + 1)每次截取一个字符
* 定义一个key接收返回的子串
*/
String key = s.substring(i,i + 1);
/**
* 定一个整型value接收map.get(key)返回的值
*/
Integer value = map.get(key);
/**
* 判断value若为空,即
*/
if (value == null){
map.put(key,1);
}else {
map.put(key,value+1);
}
}
return map;
}
/**
* 把结果写入E盘名为TestIOStream.txt的文件夹中
*/
public static void write(Map<String,Integer> map){
PrintWriter pw = null;
try {
pw = new PrintWriter("e:/TestIOStream.txt");
pw.println("size:"+map.size());
Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
for (Map.Entry entry : entrySet){
pw.println(entry.getKey()+":"+entry.getValue());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
pw.close();
}
}
/**
* 读出刚才写入的文本文件的内容
*/
public static void read(){
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("e:/TestIOStream.txt"));
String str = null;
do {
str = br.readLine();
System.out.println(str);
}while (str != null);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
运行结果:


3.使用冒泡排序对一个int数组进行排序。
public class TestBubbleSort {
public static void main(String[] args) {
int [] arr = {9,7,6,4,3,1,0};
//int [] arr = {1,2,3,4,5,6,7};
System.out.println("排序前:"+Arrays.toString(arr));
bubbleSort(arr);
System.out.println("排序后:"+Arrays.toString(arr));
}
public static void bubbleSort(int [] arr){
for (int i = 0;i < arr.length - 1;i++){
boolean flag = false;
for (int j = 0;j < arr.length - 1 - i;j++){
if (arr[j] > arr[j + 1]){
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
flag = true;
}
}
if (!flag){
break;
}
}
}
}
运行结果:

JavaSE编码试题强化练习5的更多相关文章
- JavaSE编码试题强化练习1
1. 编写应用程序,创建类的对象,分别设置圆的半径.圆柱体的高,计算并分别显示圆半径.圆面积.圆周长,圆柱体的体积. /** * 定义父类--圆类 */ public class Circle { / ...
- JavaSE编码试题强化练习7
1.编写应用程序,创建类的对象,分别设置圆的半径.圆柱体的高,计算并分别显示圆半径.圆面积.圆周长,圆柱体的体积. /** * 圆类 */ public class Circle { /** * 类属 ...
- JavaSE编码试题强化练习6
1.写出选择排序的代码实现,对一个int数组进行排序 public class TestSelectSort { public static void main(String[] args) { in ...
- JavaSE编码试题强化练习4
1.编写一个Worker类,为Worker类添加相应的代码,使得Worker对象能正确放入TreeSet中.并编写相应的测试代码. /** * Worker类 */ public class Work ...
- JavaSE编码试题强化练习3
1.给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐. public class TestCirculation { public static void ma ...
- JavaSE编码试题强化练习2
1.编写递归算法程序:一列数的规则如下: 0.1.1.2.3.5.8.13.21.34...... 求数列的第40位数是多少. public class TestRecursion { public ...
- JavaSE面试题
JavaSE面试题 欢迎到我的Git仓库去提交您觉得优秀的内容! 1.是否可以从一个static方法内部发出对非static方法的调用? 不可以.当一个static方法被调用时,可能还没有创建任何实例 ...
- [002] - JavaSE面试题(二):基本数据类型与访问修饰符
第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [002] - JavaSE面试题(二):基本数据类型与访问修饰符 第1问:Java的数据类型有哪 ...
- JavaSE 面试题: 类初始化和实例初始化等
JavaSE 面试题 类初始化和实例初始化等 class Father { private int i = test(); private static int j = method(); stati ...
随机推荐
- ztree点击加号+触发ajax请求
之前做的时候一直是点击节点才触发ajax事件,配置如下:发现点击节点前面的“+”没有反应,后来发现,应该添加一个折叠的事件. onExpand:zTreeOnClick事件和onClick的一样. v ...
- vue-router解析,vue-router原理解析
前言:新一季面试季,重新整理一些知识点: 本文详细说明自己对vue-router原理的理解: 参考: 源码:vuejs/vue-router v2.2.1 - github 文档:vue-router ...
- centos .7x service iptables save 错误解决方案
保存转发规则的时候,发现service iptables save 无效,而且报错[root@localhost bin]# service iptables saveThe service comm ...
- SQLAlchemy 增删改查 一对一 多对多
首先要导入SQLAIchemy模块 from sqlalchemy.ect.declaative import declarative_base 创建orm基类 Base = declarative_ ...
- Python---常用的内置模块
#fsum() 对整个序列求和 返回浮点数 print(math.fsum([1,4.5,5,7])) #sum() python内置求和 print(sum([1,4,5,7])) print( ...
- 【leetcode】Smallest Rotation with Highest Score
题目如下: Given an array A, we may rotate it by a non-negative integer K so that the array becomes A[K], ...
- mybatis多个参数时传参方式
第一种方案 DAO层的函数方法 Lecture getLecture(Integer id, Integer parentId); 对应的mapper.xml <select id=" ...
- python-hasattr()、getattr()、setattr()函数的使用
python中hasattr().getattr().setattr()函数 class A(): name = 'python' def __init__(self): setattr(self._ ...
- ARC模式下delloc()注意事项
1.ARC模式下delloc()调用触发时机是对象被销毁,如self.属性=nil 2.ARC模式下delloc()里面不需要手动调用[super dealloc]; 因为系统已经自动调用,多此一举的 ...
- HDU 3613 Best Reward ( 拓展KMP求回文串 || Manacher )
题意 : 给个字符串S,要把S分成两段T1,T2,每个字母都有一个对应的价值,如果T1,T2是回文串,那么他们就会有一个价值,这个价值是这个串的所有字母价值之和,如果不是回文串,那么这串价值就为0.问 ...