博客
关于我
《程序员代码面试指南》判断两个字符串是否互为变形词
阅读量:218 次
发布时间:2019-03-01

本文共 931 字,大约阅读时间需要 3 分钟。

题目:

给定两个字符串 str1 和 str2,如果你str1 和 str2 中出现的字符种类一样且每种字符出现的次数也一样,那么str1 和 str2 互为变形词。请实现函数判断两个字符串是否互为变形词。

 

举例:

str1 = “123”,str2 =“321” 返回“true”

str1 = “123”,str2 =“2331” 返回“false”

 

解答:

如果字符串 str1 和 字符串 str2 长度不同,直接返回false。如果长度相同,假设出现的字符串码值在 0~255 之间,那么先申请一个长度为 256 的整型数组 map,map[a]=b,代表字符编码为a的字符出现了b次,初始时map[0..255]的值都为0。然后遍历字符串str1,统计每种字符串出现的数量,比如遍历到 'a',其编码值为97,令map[97]++。这样 map 就成了 str1中每种字符的词频统计表。然后遍历字符串str2,每遍历一个字符串都在map中把词频减下来,比如遍历到字符‘a’,其编码值为97,则令map[97]--,如果减少之后的值小于0,直接返回 false,如果遍历完 str2,map中的值也没有出现负值,返回 true。

/** * 判断两个字符串是否互为变形词 */public class ZiFuChuan01 {      public boolean isDeformmation(String str1,String str2){            if(str1 == null || str2 == null ||str1.length() != str2.length()){                  return false;            }            char[] chas1 = str1.toCharArray();            char[] chas2 = str2.toCharArray();            int[] map = new int[256];            for(int i = 0; i

参考资料:《程序员面试代码指南》左程云 著

转载地址:http://spft.baihongyu.com/

你可能感兴趣的文章
MongoDB_文档_查询
查看>>
matplotlib_数据可视化工具
查看>>
拉格朗日_高数_1元微积分
查看>>
运维知识图
查看>>
响应的HTTP协议格式
查看>>
【C++】关于"^"的问题:是异或还是指数运算符和pow的返回值是double类型
查看>>
关于Java后端的日志打印解析
查看>>
循环整形集合,用逗号拼成字符串的小锦囊~(去掉最后一个逗号)
查看>>
java:-source 1.6 中不支持 diamond 运算符
查看>>
python爬虫--协程(初识)
查看>>
python tkinter实现输入两个数返回加和的程序GUI
查看>>
Java错误与异常
查看>>
Java-IO之File类
查看>>
单链表的查找、建立操作(C语言)
查看>>
Delphi 数据类型列表
查看>>
Delphi 选择文件之OpenDialog【并添加至Image】
查看>>
C# 基础之前后端分离【02】
查看>>
Vue v-for 循环
查看>>
Vue 用户信息表的添加删除
查看>>
MySQL更改密码
查看>>