判断两个字符串是否互为变形词
判断两个字符串是否互为变形词
【题目】
给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1和str2互为变形词。请实现函数判断两个字符串是否互为变形词。
【举例】
str1="123",str2="231",返回true。
str1="123",str2="2331",返回false。
【解答】
此题的两个字符串种类和次数都一样,只有顺序不一样,那么可以使用一个数组记录第一个字符串每个字母的出现频率次数,这样在第二个字符串中遍历每个字符,从数组中挨个减去,如果数组最后为空了,说明两个字符互为变形词。
对于数组的选择,可以利用字符的ASCII码值,字符可以直接和整型进行算术运算,字符串则不可以 ,例如:
'a'+0 = 97;"a"+0 = a0;字符的编码值出现在0~255之间,我们开辟一个266空间的整型数组map,每个字符的ASCII值对应数组的下标,例如a是97,b是98,map[97] = 3,说明a出现了3次。
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner s = new Scanner(System.in);String str1 = s.next();String str2 = s.next();if (isDeformation(str1, str2)) {System.out.println("互为变形词");} else {System.out.println("不是互为变形词");}}public static boolean isDeformation(String str1, String str2) {char[] charS1 = str1.toCharArray();char[] charS2 = str2.toCharArray();if (str1 == null || str2 == null || str1.length() != str2.length()) {return false;}int[] map = new int[256];// 开辟一个256空间的数组// 将str1中的字符记录到数组中for (int i = 0; i < charS1.length; i++) {map[charS1[i]]++;}// 遍历str2中字符,在数组中存在的就减去。for (int i = 0; i < charS2.length; i++) {if (map[charS2[i]]-- == 0) {return false;}}return true;}
}
判断两个字符串是否互为变形词相关推荐
- Java判断两个字符串是否互为变形词
判断两个字符串是否互为变形词 [题目] 给定两个字符串 str I 和 str2, 如果 strl 和 str2 中出现的字符种类一样且每种字符出现的次数也 一样,那么 str l 与 str2 互为 ...
- 判断两个字符串是否是变形词
问题: 给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样并且每种字符出现的次数也一样,那么str1与str2互为变形词.请实现函数判断两个字符串是否互为变形词. 举例: s ...
- 字符串问题----判断两个字符串是否互为旋转词
判断两个字符串是否互为旋转词 如果一个字符串str,把字符串str前面的任意部分挪到后面形成的字符串叫做str的旋转词.给定两个字符串,判断是否互为旋转词.比如 a="abcd", ...
- 判断两个字符串是否互为变位词
看了个算法题目,觉得有趣,就换成了java版本的. 原文地址:blog.csdn.net/ns_code/article/details/21409663 题目: Write a method to ...
- 字符串题目---2判断两个字符串是否为变形词
题目描述 给定两个字符串str1和str2,如果str1和str2中出现的字符种类出现的一样且每种字符出现的次数也一样,那么str1和str2互为变形词.请判断str1和str2是否为变形词 输入描述 ...
- 5.4 判断两个字符串是否互为旋转词(find函数)
[题目] 对字符串的旋转操作描述如下: 例如: str = "123456" str的所有旋转词为:"123456","234561 ...
- 7-20 判断两个字符串是否为变位词 (10 分)如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词。比如,”heart”与”earth”互为变位 词,”Mary”与”arMy
7-20 判断两个字符串是否为变位词 (10 分) 如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词.比如,"heart"与"earth" ...
- 浙大python判断两个字符串是否为变位词_算法2----------变位词
1.背景: 变位词指的是一个单词可以通过改变其他单词中字母的顺序来得到,也叫做兄弟单词,如army->mary. 题1:判断两个字符串s1和s2是否为变位词. 经典的字符串变位词检测问题是比较不 ...
- 判断两个单词是否互为变位词
题目:在英语中,如果两个单词中出现的字母相同,并且每个字符出现的次数也相同,那么这两个单词互为变位词(Anagram).例如slient与listen.evil与live等互为变位词.请完成一个函数, ...
最新文章
- 关于如何在使用easyui的时候添加一个操作列的问题
- ArcGIS JS API 4.10跨域问题(本地切片无法加载)解决办法
- java中交通灯管理系统_java案例--交通灯管理系统学习
- html5 logo svg,HTML5新特性之用SVG绘制微信logo
- 插图 引用 同一行两个插图_将图标变成插图的五个简单步骤
- 工作33:page值不能修改
- git 入门教程之 git 私服搭建教程
- AI 帮程序员找 Bug,一键快速预测
- 两层循环的中断,注意中断退出
- 在python中不论类的名字是什么构造方法的名字_2020年超星尔雅最新穿T恤听古典音乐答案搜题公众号...
- android studio下载sdk的方法,Android Studio修改Android SDK路径的几种方法
- 有关公司的各个部门英文缩写简称
- 简述固定资产的全生命周期管理流程
- 【Unity3D】人物跟随鼠标位置
- [Javascript 高级程序设计]学习心得记录11 js的BOM
- 关于PhotoShop中保存CMYK格式TIFF文件在GDI+错误地显示颜色的问题解决方法
- C语言 mmap函数
- android 图片运动轨迹,基于Android的高德地图的定位和运动轨迹记录的功能
- 迷你英雄无限服务器没了吗,迷你英雄:无限无法连接服务器是什么原因
- 电子和空穴传输材料,t-Bu-TAZ/TAZ cas150405-69-9