浙大python判断两个字符串是否为变位词

阅读: 评论:0

浙大python判断两个字符串是否为变位词

浙大python判断两个字符串是否为变位词

【题目】

写一个函数判断两个字符串是否是变位词。

【分析】

变位词(anagrams)指的是组成两个单词的字符相同,但位置不同的单词。比如说, abbcd和abcdb就是一对变位词。该题目有两种思路:

【思路一】

由于变位词只是字母顺序不同,而长度一样,字符种类一样。因此只需对两个字符串进行排序,排序后两个字符串一致则为变位词。

We are young --- are young We这是一对变位词。(这种解法算不上最优,不过清晰、简单易懂,从实践角度出发,这可能是解决该问题的上佳之选。但是为了效率,还有更好的解法。)

【思路二】

由于组成变位词的字符都一样,因此可以统计每个字符串中字符出现的次数,然后看两个字符串中各字符出现的次数是否一致。如果是,则它们是一对变位词。 可以开一个数组保存字符出现的次数。我们可以开一个大小是256的整数数组,遍历第一个字符串,将相应的字符出现的次数加1;遍历第二个字符串时,将相应出现的次数减1。最后如果数组中256个数都是0,说明两个字符串是一对变位词。(第一个字符串出现的字符都被第二个字符串出现的字符抵消了)。如果有一个不为0则不是变位词。

【Java代码 思路一】

import java.util.Arrays

public class Solution{

/**

* @param s: The first string

* @param b: The second string

* @return true or false

*/

public boolean anagram(String s, String t) {

// write your code here

if( s.length() != t.length())

return false;

return sort(s).equals(sort(t));

}

//字符串排序

public String sort(String s){

char[] a = s.toCharArray();

Arrays.sort(a);

return new String(a);

}

}

【Java代码 思路二】

public boolean anagram(String s, String t){

if(s.length() != t.length()){

return false;

}

int[] ascii = new int[256];

for(char i : s.toCharArray())

ascii[i]++;

for(int j=0; j

if(--ascii[t.charAt(j)] < 0)

return false;

}

return true;

}

【Python代码 思路一】

【Python代码 思路二】

本文发布于:2024-02-04 10:47:45,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170705421954890.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:字符串   浙大   两个   python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23