leetcode.字符串.242有效的字母异位词-Java
时间:2019-11-11
本文章向大家介绍leetcode.字符串.242有效的字母异位词-Java,主要包括leetcode.字符串.242有效的字母异位词-Java使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1. 具体题目
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注:判断两个字符串包含的字母是否完全一样。
示例 1: 输入: s = "anagram", t = "nagaram" 输出: true
示例 2: 输入: s = "rat", t = "car" 输出: false
说明: 你可以假设字符串只包含小写字母。
2. 思路分析
将 s 中字符全部存入一个 list,再遍历 t,检查 t 中字符是否都存在于 list 中,同时删去 list 中被检查过的字符。
3. 代码
1 public boolean isAnagram(String s, String t) { 2 if(s.length() != t.length()) return false; 3 List<Character> list = new ArrayList<>(); 4 for(int i = 0; i < s.length(); i++){ 5 list.add(s.charAt(i)); 6 } 7 for(int i = 0; i < t.length(); i++){ 8 if(!list.contains(t.charAt(i))){ 9 return false; 10 } 11 Character c = new Character(t.charAt(i)); 12 list.remove(c); 13 } 14 return true; 15 }
4. 思路优化
由于测试用例的字符串只包含小写字母,所以可设置一个26位计数器,记录每个字母出现个数,若 s 与 t 中各字母个数都相同,说明二者是字母异位词。
5. 代码优化
1 public boolean isAnagram(String s, String t) { 2 if (s.length() != t.length()) { 3 return false; 4 } 5 int[] counter = new int[26]; 6 for (int i = 0; i < s.length(); i++) { 7 counter[s.charAt(i) - 'a']++; 8 } 9 for (int i = 0; i < t.length(); i++) { 10 counter[t.charAt(i) - 'a']--; 11 if (counter[t.charAt(i) - 'a'] < 0) { 12 return false; 13 } 14 } 15 return true; 16 }
原文地址:https://www.cnblogs.com/XRH2019/p/11836939.html
- 我的技术投资策略:如何决定学习哪一个新技术的?
- 我的技术投资策略:如何决定学习哪一个新技术的?
- Android6.0源码之蓝牙研究汇总(一)--from初学者
- Android6.0蓝牙协议之OPP
- 简单直白教你理解Java中四大引用强引用,软引用,弱引用,虚引用
- ubuntu系统上配置git
- Android源码编译出错No rule to make...
- Android中资源各种引用方式?,@,@*等等
- git撤销修改各种情况
- Android中ContentProvider简介
- 利用Androidstudio开发Java工程图文详解
- 小程序学习笔记分享(含1-tabBar、轮播图和九宫格)
- Android中ViewStub控件分析及使用
- 如何实现微信小程序的滚动加载功能
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- BFS(广度优先算法)也就这么回事
- 从零钱兑换再看动态规划的套路
- Azure认知服务之使用墨迹识别功能识别手写汉字
- 基于 TypeScript 的 Weex 优化实践
- R语言数据库中如何多条件排序
- 用好 Java 中的枚举,真的没有那么简单!
- ABAP整型类型的几种位操作 - OR, AND, XOR的
- 【机器学习】算法原理详细推导与实现(七):决策树算法
- 如何使用代码修改SAP CRM One Order CUMULAT_H对象的值
- Caffeine Cache~高性能 Java 本地缓存之王
- 用Python的Pandas和Matplotlib绘制股票唐奇安通道,布林带通道和鳄鱼组线
- Java的Covariance设计原理和SAP ABAP的模拟实现
- ABAP和Java的tag(marker) interface
- setTimeout 是到了xx ms 就执行吗,了解浏览器的 Event-Loop 机制
- 使用ABAP的RTTI和Java反射机制访问static private属性