[每日一题] 第一题:判定是否互为字符重排

题目描述

给定两个字符串 s1s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

示例 1:

输入: s1 = "abc", s2 = "bca"
输出: true

示例 2:

输入: s1 = "abc", s2 = "bad"
输出: false

说明:

0 <= len(s1) <= 100
0 <= len(s2) <= 100

题解

class Solution {
    public boolean CheckPermutation(String s1, String s2) {
        int length1 = s1.length();
        int length2 = s2.length();

        if (length1 != length2) {
            return false;
        }

        int []index = new int[128];
        for (int i = 0; i < length1; i++) {
            index[s1.charAt(i)] ++;
            index[s2.charAt(i)] --;
        }

        for (int i = 0; i < 128; i++) {
            if (index[i] != 0) {
                return false;
            }
        }

        return true;
    }
}

时间复杂度

O(200)

注意点

  1. int []index = new int[128];。index 数组大小应为 128,而不是 100。因为我们使用字母的 ASCII 码作为下标,z 的 ASCII 码是 122。所以至少要保证大于 122

  2. 同理,第二层 for 循环的循环次数不应该是 s1.length(),而应该是我们上面定义的 index 的数组大小 128

来源:力扣(LeetCode)
链接:leetcode-cn.com/problems/check-per...

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!