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

相关推荐

去B座二楼砸水泥地:不过也可以理解,这种应该没参加过秋招
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务