Java-Anagram方法
关于Java中Anagram方法的写法
Anagram是指字符串中出现的字符
(在本题里不仅是小写字母,还包括大写字母和其他符号)
这个任务要求不能使用除String外的其他来自Java.API的类。
在网上看到了一般有这么几种写法:
1.运用Array类 (题目限制不能使用)
2.创建hash表 (题目限制不能使用)
3.确定int范围后比较大小 (不符合字符的要求)
所以需要自己设计新的方法:
题目对时间复杂度O并没有要求。
public static boolean isAnagram(String word1, String word2) {//创建word1,word2的两个对应char数组char[] array1 = word1.toCharArray();char[] array2 = word2.toCharArray();//用于统计,后面会再次提到int nums = 0;//判断word1与word2的长度是否一致if (word1.length() != word2.length()) {return false;} else {for (int i = 0; i < word1.length(); i++) {int counters1 = 0; //word1的计数器int counters2 = 0; //word2的计数器for (int j = 0; j < word1.length(); j++) {//包括自身,array[i]元素出现的总次数if (array1[i] == array1[j]) {counters1++;}}for (int k = 0; k < word2.length(); k++) {//array2中与array[i]元素相同的元素个数if (array2[k] == array1[i]) {counters2++;}}/*若两数组中对于array1[i]的两计数器值相等,说明对于在word1,word2中array1[i]元素出现次数相同此时记录word1与word2相同字符相同出现次数+1 (nums++)注意:array1[i]=array[p](p>i) 是有可能存在的,这里相同字符重复出现是必要的*/if (counters1 == counters2) {nums++;}} // 每一轮counter1和counter2都会被重新赋值/*若nums等于word1长度,则说明word1上字符x在word1都存在counter1个,在word2上存在counter2个,此时counter1 = counter2*/if (nums != word1.length()) {return false;}return true;}}
请注意:此方法并不是最优方法,如果有错误请指出。
Java-Anagram方法相关推荐
- 零基础全方位学习java的方法
java技术岗是一个就业率非常高的岗位,因此有很多人都想要学习java技术,其中不乏一些零基础同学,零基础小白都不清楚自己该如何学习java,那么下面小编就为大家详细的介绍一下零基础全方位学习java ...
- 几种任务调度的 Java 实现方法与比较
综观目前的 Web 应用,多数应用都具备任务调度的功能.本文由浅入深介绍了几种任务调度的 Java 实现方法,包括 Timer,Scheduler, Quartz 以及 JCron Tab,并对其优缺 ...
- 2021-02-23关于java的方法区,为什么叫方法区,是否与实际用途相悖?
关于java的方法区,为什么叫方法区,是否与实际用途相悖? 在java中,栈中存放的是用来保存方法运行时状态的栈帧,存储了局部变量表,操作数栈等,而方法区存放的是已加载的类的基本信息.常量.静态变量等 ...
- 大数据笔记2019.5.9 Java中方法的使用
方法: 1.方法的概念:(函数/过程) 封装了一段特定的业务逻辑功能 尽可能的独立,一个方法只让干一件事: 方法可以被反复的重新的调用 减少代码的重复,有利于代码的维护,减少团队开发的成本提高开发的效 ...
- java ubuntu 14.04,Ubuntu 14.04安装java的方法
摘要 腾兴网为您分享:Ubuntu 14.04安装java的方法,掌上电力,虚拟按键,新东方,小度等软件知识,以及公务用车平台,手机秀色直播,新视觉影院,浩辰cad批量打印,bartender2016 ...
- java中方法的参数传递
java中方法的参数传递方式只有一种:值传递: 对于基本类型来说,传递的是实参的副本(值传递),故在方法内修改传递进来的值并不会影响实参本身: 对于引用类型来说,传递进来的是引用变量的副本(也是值传递 ...
- Java中方法重载和方法重写的区别
文章目录 1 Java中方法重载和方法重写的区别 1 Java中方法重载和方法重写的区别 主要区别如下: 方法重载: 在同一个类中 方法名相同 参数个数.顺序.类型不同 返回值类型.访问修饰符任意 方 ...
- java中que_重写java Eques()方法-不工作吗?
重写java Eques()方法-不工作吗? 我遇到了一个有趣的(非常令人沮丧的)问题equals()方法,它导致了我认为经过良好测试的类崩溃,并导致了一个错误,我花了很长时间才找到它. 为了完整起见 ...
- 几种任务调度的 Java 实现方法与比较--转载
前言 任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务.本文由浅入深介绍四种任务调度的 Java 实现: Timer ScheduledExecutor 开源工具包 Quartz ...
- Java 获得方法调用者名称
2019独角兽企业重金招聘Python工程师标准>>> Java 获得方法调用者名称 博客分类: java public static void getMSG() {StackTra ...
最新文章
- 基于Matlab的遗传算法优化BP神经网络在非线性函数拟合中的应用
- Centos7 安装和配置MySQL5.7
- python观察日志(part21)--ord,chr,unichr方法的联系与区别
- php列表框怎么用,PHP+Mysql+jQuery查询和列表框选择操作实例讲解
- c语言随机生成1到100随机数_VB之生成随机数
- 程序员必须知道的10大算法(转)
- linux selenium_Selenium的基本使用方法
- 合格前端系列第九弹-前端面试那些事
- 「专题训练」Collecting Bugs(POJ-2096)
- 有关AntDesign的简单学习
- 输入一个大写或者小写,输出其相反的大小写。(c语言)
- 京淘项目实战开发-01
- itools3.0服务器维护,iTools3.0微信管理功能更新 可支持语音信息
- 盘古开源:2022年全球汽车产能仍受制于芯片短缺,中国减产量占一成
- zapya_快牙(com.dewmobile.kuaiya) - 5.9.7 (CN) - 应用 - 酷安网
- Kvaser Android驱动程序已经在许多应用程序中得到了成功的应用
- PowerShell 读取性能计数器二进制文件(.blg)记录并汇总计算
- Excel VBA 导入txt文件内容
- android 获取移动网络,Android获取移动当前APP移动流量的方法
- Zprotect1.4-1.6 patch KEY 脱壳
热门文章
- Linux 登录 帐号 cmccedu 无线,CMCC CMCC-EDU路由器绑定自动登录方法详细教程!
- tezos multisig baker
- FlashPaper Win2003部署
- windowsxp下载python下载视频_Python实现视频下载功能
- 下载网站的ICO图标方法
- maya表情blendshape_【UE4】人物角色MorphTarget(Blendshape) 面部表情制作方案
- 联想计算机处理数据形态,联想 计算机基础知识.ppt
- JS 不可逆加密后半部分,去混淆还原代码。
- Centos7 安装 Tomcat8 的正确姿势 并设置开机自启
- CSS W3C 统一验证工具