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

题目描述

给定两个字符串 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
(= ̄ω ̄=)··· 暂无内容!