java:比赛中常用方法整理——字符串(基础)
一.将字符串转化为字符数组:
toCharArray返回一个字符数组。
char[] a=J.toCharArray();
二.字符串的长度
字符串的长度和字符数组的长度是不一'样'的.
字符串长度(字符串中的字符个数):
String J="HELLO";
J.length();
字符串的长度为5,且是一个方法length();
字符数组的长度:
String J="HELLO";
char a=J.toCharArray();
System.out.println(a.length);
字符数组需要获取长度,是访问一个对象length。
三.字符串的比较
我详细阅读了这篇文章,总结了一下:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型(类)
当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址。
所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。
所以比较字符串是否相等时,要使用equlas方法。
String str1="Hello";
String str2="Hello";
str1.equals(str2);// return true
想看详细的文章地址如下:
(没总结的地方,包括重写equals方法,缓冲池中的String)
https://www.cnblogs.com/dongguol/p/5845076.html
四.遍历字符串
charAt(int index);// 返回指定索引处的 char 值。
返回指定索引处的 char
值。索引范围为从 0
到 length() - 1
。序列的第一个 char
值位于索引 0
处,第二个位于索引 1
处,依此类推,这类似于数组索引。
五.将字符串转为大写或小写
toLowerCase(Locale locale) //使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 toUpperCase() //使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
可以做一做leetcode上的一道简单题:
https://leetcode-cn.com/problems/to-lower-case/
六.替换字符串的匹配的字串
replace(CharSequence target, CharSequence replacement) //使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
replaceAll就不介绍了,区别在这篇文章有详细介绍:
https://blog.csdn.net/anmoyyh/article/details/70673812
掌握这个方法就可以快速做一下这道题:
461. 汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x
和 y
,计算它们之间的汉明距离。
注意:
0 ≤ x
, y
< 231.
示例:
输入: x = 1, y = 4 输出: 2 解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑ 上面的箭头指出了对应二进制位不同的位置。
我的解法:
class Solution {
public int hammingDistance(int x, int y) {
String str=Integer.toString(x^y,2);
return str.replace("0","").length();
}
}
以下为后期补充:
replaceFirst(String regex, String replacement) // 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
相比replace,这个方法只替代一个字符,学了这个可以做一下这个题。
389. 找不同
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例:
输入:
s = "abcd"
t = "abcde" 输出:
e 解释:
'e' 是那个被添加的字母。 我的解法:
class Solution {
public char findTheDifference(String s, String t) {
char[] a=s.toCharArray();
for(char i:a){
t = t.replaceFirst(String.valueOf(i),"");
}
return t.charAt(0);
}
}
简单但是时间和空间用的太多了,但是比赛中追求做题的速度了,有这点就够了。
运行速度更快的可以使用位运算和哈希表
七.字符串是否包含某些字符
contains(CharSequence s) //当且仅当此字符串包含指定的 char 值序列时,返回 true。
551. 学生出勤记录 I
给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:
- 'A' : Absent,缺勤
- 'L' : Late,迟到
- 'P' : Present,到场
如果一个学生的出勤记录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。
你需要根据这个学生的出勤记录判断他是否会被奖赏。
示例 1:
输入: "PPALLP"
输出: True
示例 2:
输入: "PPALLL"
输出: False 以下为我的解法:
class Solution {
public boolean checkRecord(String s) {
int a=0;
if(s.contains("LLL")){return false;}
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='A'){
a++;
}
if(a>1){return false;}
}
return true; }
}
当然有时候需要返回字串在字符串里面出现得第一个索引位置:
int indexOf(int ch) //返回指定字符在此字符串中第一次出现处的索引。
int indexOf(int ch, int fromIndex) //返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
int indexOf(String str) //返回指定子字符串在此字符串中第一次出现处的索引。
int indexOf(String str, int fromIndex) // 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
以下例题使用这个方法十分方便:
28. 实现strStr()
实现 strStr() 函数。
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
示例 1:
输入: haystack = "hello", needle = "ll"
输出: 2
示例 2:
输入: haystack = "aaaaa", needle = "bba"
输出: -1
说明:
当 needle
是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 needle
是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。
对于这道题原本的意思是使用kMP算法,但是系统封装好的方法,直接调用:
class Solution {
public int strStr(String haystack, String needle) {
return haystack.indexOf(needle);
}
}
java:比赛中常用方法整理——字符串(基础)的更多相关文章
- java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法
1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...
- js String对象中常用方法小结(字符串操作)
1.charCodeAt方法返回一个整数,代表指定位置字符的Unicode编码. strObj.charCodeAt(index) 说明: index将被处理字符的从零开始计数的编号.有效值为0到字符 ...
- Java知识系统回顾整理01基础01第一个程序05Eclipse中运行Java程序
一.打开Java文件 直接打开在 命令行Hello World 中创建的java 文件 HelloWorld.java 二.运行 点击绿色运行按钮,直接运行 在eclipse中,编译过程自动执行了 三 ...
- Java知识系统回顾整理01基础02面向对象01类和对象
一.面向对象实例--设计英雄这个类 LOL有很多英雄,比如盲僧,团战可以输,提莫必须死,盖伦,琴女 所有这些英雄,都有一些共同的状态 比如,他们都有名字,hp,护甲,移动速度等等 这样我们就可以设计一 ...
- Java知识系统回顾整理01基础04操作符01算术操作符
一.算数操作符类别 基本的有: + - * / % 自增 自减: ++ -- 二.基本算数操作符 + - * / 基本的加 减 乘 除 public class HelloWorld { public ...
- Java知识系统回顾整理01基础03变量03字面值
一.字面值定义 创建一个Hero对象会用到new关键字,但是给一个基本类型变量赋值却不是用new. 因为基本类型是Java语言里的一种内置的特殊数据类型,并不是某个类的对象. 给基本类型的变量赋值的 ...
- 在java代码中显示json字符串(怎么避免json字符串中双引号在java代码中显示)
String log = "eyJvcmRlckluZm8iOnsiaWQiOjEwNzQwNCwib3JkZXJJZCI6MjczNjQyMSwicHJvZHVjdENvZGUiOjQ1N ...
- Java知识系统回顾整理01基础01第一个程序02命令行格式编译和执行Java程序
一.先看运行效果 在控制台下运行第一个Java程序,可以看到输出了字符串 hello world 二.准备项目目录 通常都会在e: 创建一个project目录 在这个例子里,我们用的是e:/proje ...
- Java知识系统回顾整理01基础05控制流程01if
一.if if(表达式1){ 表达式2: } 如果表达式1的值是true, 就执行表达式2 public class HelloWorld { public static void main(Stri ...
随机推荐
- java ArrayList集合
ArrayList集合是程序中最常见的一种集合,它属于引用数据类型(类).在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来 ...
- 管理和安装 chart - 每天5分钟玩转 Docker 容器技术(168)
安装 chart 当我们觉得准备就绪,就可以安装 chart,Helm 支持四种安装方法: 安装仓库中的 chart,例如:helm install stable/nginx 通过 tar 包安装,例 ...
- Net Core动态加载webservice/WCF
1.动态加载的目的 前端时间和顺丰对接了个项目(PS:顺丰的开发对外能力真的是掉粉),用的webservice 测试时用的无固定IP访问,正式版需要固定IP访问,我的理解是web服务都是全网络可以访问 ...
- Tiny4412之按键驱动
一:按键驱动 按键驱动跟之前的LED,蜂鸣器的方法类似:通过底板,核心板我们可以看到按键的电路图: 通过电路图我们可以看出,当按键按下去为低电平,松开为高电平:所以我们要检测XEINT26的状态,通过 ...
- SSM-MyBatis-09:Mybatis中SqlSession的close为什么能造成事务的回滚
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 经过上几次的查找,笔者我就简单的说一下查找的思路,留给读者自己实践 同样找到sqlsession的实现类,-- ...
- Java的锁
今天练习了Java的多线程,提到多线程就基本就会用到锁 Java通过关键字及几个类实现了锁的机制,这里先介绍下Java都有哪些锁: 一.Java实现锁的机制: Java运行到包含锁的代码时,获取尝 ...
- Spring Batch 专题
如今微服务架构讨论的如火如荼.但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易.在诸如银行的金融机构中,每天有3-4万笔的批处理作业需要处理.针对OLTP,业界有大量的开源框架.优秀的架 ...
- 安装mysql5.5.28的步骤 2017.6.27
http://blog.sina.com.cn/s/blog_7cd69a6501014x7h.html
- MySQL语句整理(一)
--01 mysql 数据库的操作 -- 链接数据库 mysql -uroot -pmysql -- 不显示密码 ***** mysql -uroot ...
- Golang 知识点总结
Golang 知识点总结 目录 [−] 各种类型复制的时候的花费 可使用内建函数的类型 (len.cap.close.delete.make) 内建容器类型的值比较 组合类型T{...}的值比较 零值 ...