在群里经常碰到很多找工作的朋友回来就谈论自己的面试经历,被问到或者笔试过程中碰到的一些题目,下面把前两天几个朋友提出的问题进行简单的实现下,希望各位大虾指教!代码如下所示:
[code]
package com.myclover.exam;
public class Exam {
private static final char[] SRC_NUMS = "零一二三四五六七八九".toCharArray();
/**
* 功能说明:把阿拉伯数字转换成中文的数字,即1-->一,10-->十
* @author myclover
* @param num 传入一个阿拉伯数字,正整数
* @return 返回值:返回对应的中文数字
*/
public static String convertIntToString(int num){
String sNum = String.valueOf(num);
StringBuffer numSb = new StringBuffer();
for(int i = sNum.length() - 1 , j = 0 ; i >= 0 ; i-- , j++){
char ch = sNum.charAt(i);
if(ch == '0'){
if(i < sNum.length() - 1 && sNum.charAt(i + 1) != '0'){
numSb.append(SRC_NUMS[0]);
}
}else{
if(j == 1){
numSb.append("十");
//这里表示的是11-19,去掉前面的一,变成十几
if(i == 0 && ch == '1'){
continue;
}
}else if(j == 2){
numSb.append("百");
}
numSb.append(SRC_NUMS[ch - '0']);
}
}
return numSb.reverse().toString();
}
/**
* 功能描述:对一个正整数进行反转输出
* 一个朋友在群里聊到面试被问了这样一个题目,对一个正整数进行逆序输出,需要使用递归实现,例如传入:12345,则返回:54321
* @author myclover
* @param n 传入的正整数
* @return
*/
public static int reverseInts(int n){
String str = String.valueOf(n);
if(n < 0 || str.length() > 10){
return -1;
}
if(str.length() == 1){
return n;
}else if(str.length() > 1){
char ch = str.charAt(str.length() - 1);
String s = str.substring(0, str.length() - 1);
return (Character.digit(ch, 10) * (int)Math.pow(10, str.length() - 1)) + reverseInts(Integer.parseInt(s)) ;
}
return -1;
}
/**
* 功能描述:写一个方法,实现字符串转换为int类型,不能使用Integer包装类
* @author myclover
* @param str 传入的字符串
* @return
*/
public static int converStrToInt(String str){
if(str.length() > 10){
return -1;
}
int re = 0;
int count = str.length();
boolean isNegative = false;
for(int i = 0 ; i < str.length() ; i++){
if(str.charAt(i) == '-'){
isNegative = true;
count-- ;
continue;
}
if(str.charAt(i) == '+'){
isNegative = false;
count-- ;
continue;
}
count-- ;
int s = Character.digit(str.charAt(i), 10);
re += s * (int)Math.pow(10, count);
}
if(isNegative){
return -re;
}
return re;
}
/**
* 功能描述:对传入的字符串进行逆序输出,不能使用Java API自带的反转方法
* @author myclover
* @param str 传入的字符串
* @return
*/
public static String convertStrToStr(String str){
StringBuffer sb = new StringBuffer("");
if(str.length() == 1){
return str;
}else if(str.length() > 1){
return sb.append(str.substring(str.length() - 1)).append(convertStrToStr(str.substring(0, str.length() - 1))).toString();
}
return null;
}
}
[/code]
[code]
package com.myclover.exam;
public class Exam {
private static final char[] SRC_NUMS = "零一二三四五六七八九".toCharArray();
/**
* 功能说明:把阿拉伯数字转换成中文的数字,即1-->一,10-->十
* @author myclover
* @param num 传入一个阿拉伯数字,正整数
* @return 返回值:返回对应的中文数字
*/
public static String convertIntToString(int num){
String sNum = String.valueOf(num);
StringBuffer numSb = new StringBuffer();
for(int i = sNum.length() - 1 , j = 0 ; i >= 0 ; i-- , j++){
char ch = sNum.charAt(i);
if(ch == '0'){
if(i < sNum.length() - 1 && sNum.charAt(i + 1) != '0'){
numSb.append(SRC_NUMS[0]);
}
}else{
if(j == 1){
numSb.append("十");
//这里表示的是11-19,去掉前面的一,变成十几
if(i == 0 && ch == '1'){
continue;
}
}else if(j == 2){
numSb.append("百");
}
numSb.append(SRC_NUMS[ch - '0']);
}
}
return numSb.reverse().toString();
}
/**
* 功能描述:对一个正整数进行反转输出
* 一个朋友在群里聊到面试被问了这样一个题目,对一个正整数进行逆序输出,需要使用递归实现,例如传入:12345,则返回:54321
* @author myclover
* @param n 传入的正整数
* @return
*/
public static int reverseInts(int n){
String str = String.valueOf(n);
if(n < 0 || str.length() > 10){
return -1;
}
if(str.length() == 1){
return n;
}else if(str.length() > 1){
char ch = str.charAt(str.length() - 1);
String s = str.substring(0, str.length() - 1);
return (Character.digit(ch, 10) * (int)Math.pow(10, str.length() - 1)) + reverseInts(Integer.parseInt(s)) ;
}
return -1;
}
/**
* 功能描述:写一个方法,实现字符串转换为int类型,不能使用Integer包装类
* @author myclover
* @param str 传入的字符串
* @return
*/
public static int converStrToInt(String str){
if(str.length() > 10){
return -1;
}
int re = 0;
int count = str.length();
boolean isNegative = false;
for(int i = 0 ; i < str.length() ; i++){
if(str.charAt(i) == '-'){
isNegative = true;
count-- ;
continue;
}
if(str.charAt(i) == '+'){
isNegative = false;
count-- ;
continue;
}
count-- ;
int s = Character.digit(str.charAt(i), 10);
re += s * (int)Math.pow(10, count);
}
if(isNegative){
return -re;
}
return re;
}
/**
* 功能描述:对传入的字符串进行逆序输出,不能使用Java API自带的反转方法
* @author myclover
* @param str 传入的字符串
* @return
*/
public static String convertStrToStr(String str){
StringBuffer sb = new StringBuffer("");
if(str.length() == 1){
return str;
}else if(str.length() > 1){
return sb.append(str.substring(str.length() - 1)).append(convertStrToStr(str.substring(0, str.length() - 1))).toString();
}
return null;
}
}
[/code]