昨天去一家公司面试,做一道将100000000之内数字转成字符串的算法题,一看位数不多,想用穷举法,结果弄了半天没弄出来,今天又想了下,写了点代码。如下。
public class Convert {
static String number[] = {"零","一","二","三","四","五","六","七","八","九",};
static String decimal[]={"","十","百","千","万","万十","万百","万千","亿"};
static char ch[] = {'0','1','2','3','4','5','6','7','8','9'};
public static void main(String[] args) {
convertToChinese(0);
convertToChinese(1);
convertToChinese(10);
convertToChinese(100);
convertToChinese(101);
convertToChinese(10000);
convertToChinese(101010);
convertToChinese(1010010);
}
public static void convertToChinese(int num){
String str = num+"";
String converseStr = converse(str);
String result="";
for(int i=0;i<converseStr.length();i++){
char c = converseStr.charAt(i);
int j =0;
for(;j<10;j++){
if(c==ch[j]){
break;
}
}
if(number[j].equals("零")){
result+="零";
}else{
result+=decimal[i]+number[j];
}
}
System.out.println(quitZero(quitWan(converse(result))));
}
private static String converse(String str) {
String newStr="";
for(int i=str.length()-1;i>=0;i--){
char c = str.charAt(i);
newStr+=c;
}
return newStr;
}
// 处理万位
private static String quitWan(String str){
String [] temp = str.split("万");
String result = "";
if(temp.length>2){
for(int i=0;i<temp.length-1;i++){
result+=temp[i];
}
result=result+"万"+temp[temp.length-1];
return result;
}
return str;
}
// 处理零
private static String quitZero(String str){
String newStr="";
for(int i=0;i<str.length();i++){
char c = str.charAt(i);
if(c=='零'&&i==str.length()-1){
break;
}
if(c=='零'&&str.charAt(i+1)=='零'){
String temp="";
for(int j=0;j<str.length();j++){
if(j==i){continue;}
temp+=str.charAt(j);
}
return quitZero(temp);
}
newStr+=c;
}
if(newStr.equals("")){newStr="零";}
return newStr;
}
}
结果如下
零
一
一十
一百
一百零一
一万
一十万零一千零一十
一百零一万零一十
用了N多 String+。。。。内存中会有很多垃圾,应该用StringBuffer代替,马上要出去了,以后再改
分享到:
相关推荐
- str:目标字符串,转换后的字符串将存储在其中。 - radix:基数,用于指定数字的进制基数,比如基数为10则表示十进制。 需要注意的是,itoa()函数不保证在所有平台上都有,且不与ANSI标准兼容,因此在标准严格...
sql中将数字转换为字符串—STR().doc
这两个函数分别用于将整数和浮点数转换成字符串形式。 #### 二、`toStr()` 函数详解 **函数原型**: ```c char* toStr(int num, char precition); ``` **功能描述**: 该函数接收一个整数 `num` 和一个精度参数 `...
在这个例子中,`strNumbers`是一个包含数字的字符串,通过`Split(',')`将其分割成字符串数组`tempArr`。接着,使用`int.Parse()`方法将每个字符串元素转换为整数,并存储在`intArr`数组中。 ### 三、读取文件并转换...
总的来说,这些库函数为C++程序员提供了将数字转换为字符串的便捷途径,适用于不同的数值类型和特定的格式需求。在实际开发中,应根据项目需求和目标平台选择合适的转换方法,同时注意错误处理和内存管理,确保程序...
|PowerBuilder 数组字符串相互转化 天津 李华锋 * * | | * *PowerBuilder 数组字符串相互转化 完全免费 * * | | * *如果你将这个程序放在你的网站上,我希望你能同时加上本站的链接 | | * | * | * *老字符串转数组...
在C#中,将一个表示数字的字符串转换为整数类型的最常用方法是使用`Convert.ToInt32`函数或`int.Parse`方法。 **示例:** ```csharp string str = "1234"; int i = Convert.ToInt32(str); ``` 这里,`Convert.To...
比如,如果字符串中包含浮点数,我们可能需要将匹配到的字符串转换为浮点数类型。同时,对于大型项目,要考虑异常处理,确保代码的健壮性。例如,如果输入的字符串格式不正确,提取过程中可能会抛出异常,这时可以...
自己用C语言实现数字到字符串的转换,包括负数
在Oracle数据库中,将字符串转换为数字是一项常见的操作,特别是在处理包含数字的字符串列时,可能需要进行数值计算或按照数值大小进行排序。本篇文章将深入探讨如何在SQL查询中利用Oracle提供的函数来实现这一目标...
本文档将详细介绍从字符串中提取连续的字符数字转换为整数的方法,並提供了完整的源代码,适合于那些想要编码实现字符串中提取连续的字符数字转换为整数的同学。 知识点1:字符串处理 在本文档中,我们使用了C语言...
### 将整数转换成字符串的函数:详细解析 在嵌入式系统开发过程中,经常需要将数值型数据转换为字符串形式以便于显示或传输。本文将深入探讨一种用于将16位整数转换为字符串指针的方法,并对其背后的原理进行详细...
例如,将字符串转换为数字值参数 IN 中的数值数据类型为 STRING,WSTRING;参数 OUT 中数值的数据类型为 CHAR,WCHAR,USINT,UINT,UDINT,SINT,INT,DINT,REAL,LREAL。 2. 字符串和数值相互进行转换指令 字符...
java代码,从16进制数直接转化成字符串(包括中文)简单好用
在处理通信数据时,我们经常需要对字符和字符串进行操作,例如将字符转换为字符串,或者从字符串中截取有效字符。以下将详细介绍在TIA博途中如何实现这些操作。 首先,字符转换为字符串的过程通常涉及到ASCII码。...
同时,为了输出或显示,可能需要将数字转换为字符串。在使用这些函数时,需要注意检查转换是否成功,以及处理可能出现的错误,例如无效的输入或溢出问题。 以下是一些示例代码片段,演示了如何使用这些函数: ```c...
C语言常用数字和字符串转换函数,toi 字符串转换成整型数 atol 字符串转换成长整型数 atof 字符串转换成浮点型数 strtol 字符串转换成长整型数 strtoul 字符串转换成无符号长整型数 strtod 字符串转换成浮点数
下面给大家介绍PHP将字符串转换成数字的四种方法。 方法1: 使用number_format()函数。number_format()函数用于将字符串转换为数字。它会在成功时返回格式化的数字,否则会在失败时给出E_WARNING。 <?php $...
为了将字符串转换为纯数字,我们可以先将字符串的每个字符转换为ASCII码,然后将这些数字连接成一个大整数。解密时则相反,将这个大整数拆分,还原出每个字符的ASCII码,再转化为原来的字符。 下面是一个简单的示例...
这时,我们需要自己编写函数将整数转换为字符串,以便通过USART发送。下面我们将详细讨论如何实现这个功能,并探讨其背后的原理和优化方法。 一、整数转字符串的基本原理 整数转字符串的过程主要是将十进制整数...