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数目
#笔试题目##春招#
全部评论

相关推荐

🎓学历背景:双非土木硕👨‍💻意向职位:AI应用开发大佬们可以帮我看看简历吗,秋招至今0offer
秋招结束再玩瓦:今年科班都不好找哇……你可以试试交叉岗,比如制造业国企的一些开发算法,或者互联网的边缘岗,it技术支持,运维这些
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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