3.22美团笔试后台开发字符串比较java

public class StringCompare /*  简洁的讲问题核心为维护以T.length为长的在S中滑动窗口中a,b数目  */ { public static void main(String... args) {
        String S = "aaabb";
        String T = "bab"; int m = S.length(); int n = T.length(); int a = 0; int b = 0; for (int i = 0; i < m - n + 1; i++) { if (S.charAt(i) == 'a')
                a++; else b++;
        } int sum = 0; for (int i = 0; i < n; i++) { if (T.charAt(i) == 'a')
                sum += b; else sum += a; if (i + m - n + 1 < m && S.charAt(i) != S.charAt(i + m - n + 1)) { if (S.charAt(i) == 'a') {
                    a--;
                    b++;
                } else {
                    a++;
                    b--;
                }
            }
        }
        System.out.println(sum);
    }
}
代码可能写的比较丑参考别人的思路,直接看代码也更容易懂,核心是以T中每一个字母为对象,预先确定它和S中哪个范围内(滑动窗口)的字符串作比较,统计窗口内a,b数目,
遍历T中字母时只需要更新S对应窗口中a,b数目就行了,这样每次遍历T中元素都用到了除去上次窗口首尾中a,b数目
#笔试题目##春招#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 11:55
点赞 评论 收藏
分享
07-07 12:25
门头沟学院 Java
程序员牛肉:你这个智邮公司做的就是那个乐山市税务系统的服务吗?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 12:05
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务