讨论/题目交流/🏆 第 152 场力扣周赛/
🏆 第 152 场力扣周赛

这是 9 月的第一场周赛,欢迎小伙伴们在这里交流分享你的参赛心得以及体验。

image.png

展开讨论
力扣 (LeetCode)发起于 2019-09-01

Go 打死过不了 第三题,算法是一样的

func canMakePaliQueries(s string, queries [][]int) []bool {
	l := len(s)
	ms := make([][]bool, l+1)
	for i := 0; i < l+1; i++ {
		ms[i] = make([]bool, 26)
	}
	var c int
	for i := 1; i < l+1; i++ {
		c = int(s[i-1] - 'a')
		for j := 0; j < 26; j++ {
			ms[i][j] = ms[i-1][j]
		}
		ms[i][c] = !ms[i][c]
	}

	l2 := len(queries)
	rs := make([]bool, l2)
	for i := 0; i < l2; i++ {
		q := queries[i]
		c = 0
		for j := 0; j < 26; j++ {
			if ms[q[1]+1][j] != ms[q[0]][j] {
				c++
			}
		}
		rs[i] = q[2] >= (c >> 1)
	}
	return rs
}

同样的代码java秒过

    public List<Boolean> canMakePaliQueries(String s, int[][] queries) {
        int l = s.length();
        boolean [][]ms = new boolean[l+1][26];
        for (int i = 1; i < l+1; i++) {
            int c = s.charAt(i-1) - 'a';
            System.arraycopy(ms[i - 1], 0, ms[i], 0, 26);
            ms[i][c] = !ms[i][c];
        }

        LinkedList<Boolean> rs = new LinkedList<Boolean>();
        int c;
        for (int[] q : queries) {
            c = 0;
            for (int j = 0; j < 26; j++) {
                if (ms[q[1] + 1][j] != ms[q[0]][j]) {
                    c++;
                }
            }

            rs.add(q[2] >= (c >> 1));

        }
        return rs;
    }
展开全部 19 讨论