java - Leetcode 242, 关于数组递增和遍历的一点问题
ringa_lee
ringa_lee 2017-04-18 10:29:31
[Java讨论组]

public class Solution {
public boolean isAnagram(String s, String t) {

 if(s.equals(t))
    return true;
if(s==null||t==null||s.length()!=t.length())
    return false;
int[] num=new int[26];
for(int i=0;i<s.length();i++){
    num[s.charAt(i)-'a']++;
    num[t.charAt(i)-'a']--;
}
for(int i:num ){
    if(i!=0)
        return false;
}
return true;

}

这是用来判断两个字符串s和t是否是变形词的问题,例如abc和bca是变形词, abc和adw不是变形词。

for(int i=0;i<s.length();i++){
    num[s.charAt(i)-'a']++;
    num[t.charAt(i)-'a']--;
}
for(int i:num ){
    if(i!=0)
        return false;
        

关于这段代码有点小疑问,num[]++和num[]--代表着什么? 如果只写 - 'a'的话,又如何记录26个字母在每个字符串中出现的个数呢?

ringa_lee
ringa_lee

ringa_lee

全部回复(1)
ringa_lee

num[s.charAt(i)-'a']++;代表s中该字母的频数加1;
num[t.charAt(i)-'a']--;代表t中该字母的频数减1;
当s和t中所有字母频数相同时即为变形词。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号