判断两个字符串是否互为变形词

【题目】 

  给定两个字符串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;}
}

判断两个字符串是否互为变形词相关推荐

  1. Java判断两个字符串是否互为变形词

    判断两个字符串是否互为变形词 [题目] 给定两个字符串 str I 和 str2, 如果 strl 和 str2 中出现的字符种类一样且每种字符出现的次数也 一样,那么 str l 与 str2 互为 ...

  2. 判断两个字符串是否是变形词

    问题: 给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样并且每种字符出现的次数也一样,那么str1与str2互为变形词.请实现函数判断两个字符串是否互为变形词. 举例: s ...

  3. 字符串问题----判断两个字符串是否互为旋转词

    判断两个字符串是否互为旋转词 如果一个字符串str,把字符串str前面的任意部分挪到后面形成的字符串叫做str的旋转词.给定两个字符串,判断是否互为旋转词.比如 a="abcd", ...

  4. 判断两个字符串是否互为变位词

    看了个算法题目,觉得有趣,就换成了java版本的. 原文地址:blog.csdn.net/ns_code/article/details/21409663 题目: Write a method to ...

  5. 字符串题目---2判断两个字符串是否为变形词

    题目描述 给定两个字符串str1和str2,如果str1和str2中出现的字符种类出现的一样且每种字符出现的次数也一样,那么str1和str2互为变形词.请判断str1和str2是否为变形词 输入描述 ...

  6. 5.4 判断两个字符串是否互为旋转词(find函数)

    [题目]     对字符串的旋转操作描述如下:      例如: str = "123456" str的所有旋转词为:"123456","234561 ...

  7. 7-20 判断两个字符串是否为变位词 (10 分)如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词。比如,”heart”与”earth”互为变位 词,”Mary”与”arMy

    7-20 判断两个字符串是否为变位词 (10 分) 如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词.比如,"heart"与"earth" ...

  8. 浙大python判断两个字符串是否为变位词_算法2----------变位词

    1.背景: 变位词指的是一个单词可以通过改变其他单词中字母的顺序来得到,也叫做兄弟单词,如army->mary. 题1:判断两个字符串s1和s2是否为变位词. 经典的字符串变位词检测问题是比较不 ...

  9. 判断两个单词是否互为变位词

    题目:在英语中,如果两个单词中出现的字母相同,并且每个字符出现的次数也相同,那么这两个单词互为变位词(Anagram).例如slient与listen.evil与live等互为变位词.请完成一个函数, ...

最新文章

  1. 关于如何在使用easyui的时候添加一个操作列的问题
  2. ArcGIS JS API 4.10跨域问题(本地切片无法加载)解决办法
  3. java中交通灯管理系统_java案例--交通灯管理系统学习
  4. html5 logo svg,HTML5新特性之用SVG绘制微信logo
  5. 插图 引用 同一行两个插图_将图标变成插图的五个简单步骤
  6. 工作33:page值不能修改
  7. git 入门教程之 git 私服搭建教程
  8. AI 帮程序员找 Bug,一键快速预测
  9. 两层循环的中断,注意中断退出
  10. 在python中不论类的名字是什么构造方法的名字_2020年超星尔雅最新穿T恤听古典音乐答案搜题公众号...
  11. android studio下载sdk的方法,Android Studio修改Android SDK路径的几种方法
  12. 有关公司的各个部门英文缩写简称
  13. 简述固定资产的全生命周期管理流程
  14. 【Unity3D】人物跟随鼠标位置
  15. [Javascript 高级程序设计]学习心得记录11 js的BOM
  16. 关于PhotoShop中保存CMYK格式TIFF文件在GDI+错误地显示颜色的问题解决方法
  17. C语言 mmap函数
  18. android 图片运动轨迹,基于Android的高德地图的定位和运动轨迹记录的功能
  19. 迷你英雄无限服务器没了吗,迷你英雄:无限无法连接服务器是什么原因
  20. 电子和空穴传输材料,t-Bu-TAZ/TAZ cas150405-69-9

热门文章

  1. python为什么叫爬虫编程-Python是个什么鬼?为何周围的人都抢着学
  2. 文字对称中的数学与魔术(二)——英文字母到单词的对称性
  3. c# 面试题及部分答案
  4. JavaScript入门基础学习总结
  5. 网狐棋牌框架内核通信设计原理剖析
  6. matlab分布式电源储能系统配置优化研究 面向新能源储能容量配置 储能系统定容和电力系统优化调度双层决策优化模型
  7. I2C总线3.3V与5V双向电平转换电路
  8. Uni-app学习过程(1)
  9. 01-ESP8266 NodeMCU 物联网开发初识
  10. java 私有构造_JAVA中构造方法私有化的作用是什么?