普通视图

发现新文章,点击刷新页面。
今天 — 2026年4月24日首页

贪心

2023年8月27日 14:09

记录三种字符的个数,计算出L和R的差值的绝对值,最后加上'_'的数量,直接返回。

class Solution {
public:
    int furthestDistanceFromOrigin(string moves) {
        int cnt1 = 0, cnt2 = 0, cnt3 = 0;
        for (auto x : moves) {
            if (x == 'L') cnt1++;
            if (x == 'R') cnt2++;
            if (x =='_') cnt3++;
        }
        return cnt1 > cnt2 ? cnt1 + cnt3 - cnt2 : cnt2 + cnt3 - cnt1;
    }
};
class Solution {
    public int furthestDistanceFromOrigin(String moves) {
        int cnt1 = 0, cnt2 = 0, cnt3 = 0;
        char[] str = moves.toCharArray();
        for (char x : str) {
            if (x == 'L') cnt1++;
            if (x == 'R') cnt2++;
            if (x =='_') cnt3++;
        }
        return cnt1 > cnt2 ? cnt1 + cnt3 - cnt2 : cnt2 + cnt3 - cnt1;
    }
}
func furthestDistanceFromOrigin(moves string) int {
    cnt1, cnt2, cnt3 := 0, 0, 0
    for i := 0; i < len(moves); i++ {
        if moves[i] == 'L' {
            cnt1++
        }
        if moves[i] == 'R' {
            cnt2++
        } 
        if moves[i] =='_' {
            cnt3++
        }
    }
    if (cnt1 > cnt2) {
        return cnt1 + cnt3 - cnt2
    }
    return cnt2 + cnt3 - cnt1

}
昨天以前首页

哈希表-简易思路

2023年9月3日 15:01

可以通过记录偶数下标和奇数下标的哈希表是否相同即可。

class Solution {
public:
    bool checkStrings(string s1, string s2) {
        int n = s1.size();
        vector<int> mp1(26), mp2(26);
        for (int i = 0; i < n; i++) {
            if (i % 2 == 0 || i == 0) {
                ++mp1[s1[i] - 'a'];
            } else {
                ++mp2[s1[i] - 'a'];
            }
        }
        vector<int> mp3(26), mp4(26);
        for (int i = 0; i < n; i++) {
            if (i % 2 == 0 || i == 0) {
                ++mp3[s2[i] - 'a'];
            } else {
                ++mp4[s2[i] - 'a'];
            }
        }
        for (int i = 0; i < 26; i++) {
            if (mp1[i] != mp3[i] || mp2[i] != mp4[i]) return false;
        }
        return true;
    }
};
class Solution {
    public boolean checkStrings(String s1, String s2) {
        int n = s1.length();
        int[] mp1 = new int[26];
        int[] mp2 = new int[26];

        for (int i = 0; i < n; i++) {
            if (i % 2 == 0 || i == 0) {
                mp1[s1.charAt(i) - 'a']++;
            } else {
                mp2[s1.charAt(i) - 'a']++;
            }
        }

        int[] mp3 = new int[26];
        int[] mp4 = new int[26];

        for (int i = 0; i < n; i++) {
            if (i % 2 == 0 || i == 0) {
                mp3[s2.charAt(i) - 'a']++;
            } else {
                mp4[s2.charAt(i) - 'a']++;
            }
        }

        for (int i = 0; i < 26; i++) {
            if (mp1[i] != mp3[i] || mp2[i] != mp4[i]) {
                return false;
            }
        }
        return true;
    }
}
func checkStrings(s1 string, s2 string) bool {
    n := len(s1)
    mp1 := make([]int, 26)
    mp2 := make([]int, 26)

    for i := 0; i < n; i++ {
        if i%2 == 0 || i == 0 {
            mp1[s1[i]-'a']++
        } else {
            mp2[s1[i]-'a']++
        }
    }

    mp3 := make([]int, 26)
    mp4 := make([]int, 26)

    for i := 0; i < n; i++ {
        if i%2 == 0 || i == 0 {
            mp3[s2[i]-'a']++
        } else {
            mp4[s2[i]-'a']++
        }
    }

    for i := 0; i < 26; i++ {
        if mp1[i] != mp3[i] || mp2[i] != mp4[i] {
            return false
        }
    }
    return true
}
❌
❌