频道栏目
首页 > 程序开发 > web前端 > HTML/CSS > 正文
分享一个面试遇到的算法题
2018-06-29 14:33:22         来源:简单快乐的博客  
收藏   我要投稿

1. 两个整数求和

String a = "893333.....3333";

String b = "349......999";

求 a + b;

由于数字太长,只能存在String 里,不能整体转成int/long来加,只能一位一位的转成int来加,注意进位。

用一个for循环按每一位做加法,最后输出到一个String里。

/**

*  如何将char类型的数字转换成int型的数字

*  StringBuffer 追加时,可以 在前面 追加吗

* @param a

* @param b

* @return

*/

public static String sumLargeInt(String a,String b){

char[] a1 = a.toCharArray();

char[] a2 = b.toCharArray();

int i1 = a1.length;

int i2 = a2.length;

int i11 = 0;//记录每次取出来的数

int i22 = 0;//

StringBuffer sb = new StringBuffer();

int shi = 0;//记录十位

for (int i = 0; i < (i1>i2?i1:i2); i++) {

int t1 = i1 - i - 1;

int t2 = i2 - i - 1;

if(t1>=0){

i11 = a1[t1] - '0';

}else{

i11 = 0;

}

if(t2>=0){

i22 = a2[t2] - '0';

}else{

i22 = 0;

}

System.out.println(i11 + "   " + i22);

int temp = i11 + i22 + shi;

if(temp>=10){

sb.insert(0, temp%10);

shi = 1;

}else{

sb.insert(0,temp);

shi = 0;

}

}

//当时没有考虑到这种情况 两个数位数相等的时候, 在进一位没有考虑到

if(shi>0){

sb.insert(0,shi);

}

return sb.toString();

}

2. 一个字符串去重,输出结果保持顺序。

举例:输入 String a = "ABCCC";

            输出 deduplicate(a) = "ABC";

            输入 String a = "abbbcdeffffgacde";

            输出 deduplicate(a) = "abcdefg";

       /**

* 用 LinkedHashMap 对字符串去重

* @param str

* @return

*/

private static String test(String str) {

        Map<Object,Object> maps = new LinkedHashMap();

        StringBuffer sb = new StringBuffer();

        for (int i = 0; i < str.length(); i++) {

            char charAt = str.charAt(i);

            if(!maps.containsValue(charAt)){

            System.out.println(charAt);

            maps.put(charAt, charAt);

            };

        }

        Set<Object> keySet = maps.keySet();

        for (Object string : keySet) {

        sb.append(string);

        }

        return sb.toString();

    }

点击复制链接 与好友分享!回本站首页
上一篇:BootStrap-fileinput异步上传文件完整实例分享
下一篇:日期时间控件layDate的使用教程
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站