美文网首页
要成功就做一百题-97

要成功就做一百题-97

作者: 西5d | 来源:发表于2020-04-14 18:11 被阅读0次

    题目名称

    今天来一个简单题目试试水,好久没发了。 一来遇到个复杂题,一时没解,二来最近实在有点忙。废话不多,开始正题。
    题目名称为找两个字符串的不同

    描述

    给定两个字符串 s , t , 其中t的字符比s多一个,方法返回多余的这个字符。比如:

    s = aaaab
    t = aaaabb
    结果返回b

    解题思路

    这里先限定了t比s只多一个字符,首先想到的是转成列表,依次遍历,将s包含在t中的元素排除,最终剩下一个t中的字符就是结果。如下的解法1,实现很粗暴。

    还有一种方法。t中只比s多一个字符,而字符可以表示成整数,所以找不同就可以算t的字符和减去s的字符和,得到的值就是不同的字符,如下解法2.

    代码

    //1 列表
    
    public char stringDiff(String s, String t){
        ArrayList<Character> listA = new ArrayList<>();
                ArrayList<Character> listB = new ArrayList<>();
                for (int i = 0; i < s.length(); i++) {
                    listA.add(s.charAt(i));
                    listB.add(t.charAt(i));
                }
                listB.add(t.charAt(s.length()));
                for (int i = 0; i < listA.size(); i++) {
                    if (listB.contains(listA.get(i))) {
                        listB.remove(listA.get(i));
                    }
                }
                return listB.get(0);
    }
    
    //2 字符和之差
    public char stringAddition2(String s, String t) {
            int sumS = 0;
            int sumB = 0;
            for (int i = 0; i < s.length(); i++) {
                sumS = s.charAt(i) + sumS;
                sumB = t.charAt(i) + sumB;
            }
            sumB = sumB + t.charAt(s.length());
            return (char) (sumB - sumS);
        }
    
    

    总结

    对于算法实现来说比较严格,不同算法的效率差别很多,但如果面向实际业务,可能最终结果更重要,实现的重要性退居其次。然而当数据量激增之后,高效率的算法还是必不可少的,日常中还是要严格要求,充分考虑可能的边界情况,才是合格的做法。

    相关文章

      网友评论

          本文标题:要成功就做一百题-97

          本文链接:https://www.haomeiwen.com/subject/xqatvhtx.html