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 ...
随机推荐
- Go笔记之一:工程项目结构的注意事项
Go笔记之一:工程项目结构的注意事项 对 Go 项目目录的理解 (Windows平台为例) 刚安装完的 Go 需要设定环境变量,最关键的环境变量有三个,GOROOT.GOPATH和GOBIN.GORO ...
- CentOS7下安装rabbitmq消息队
安装如下步骤: 1.首先安装erlang yum install erlang 注:如果出现No package erlang available. rpm -Uvh http://download. ...
- (WCF初体验)WCF服务器诊断
WCF服务器搭建好之后,不管是客户端访问还是本地调试,出个问题抛出来的原因往往在我们看来都是不知所以然的,更可能是跑出来的问题和真正的问题差了很远,比如"通信对象 System.Servic ...
- YII框架CGridView分页实现
C控制器层 $model = new User('search'); $model->unsetAttributes(); $dataProvider = $model->search() ...
- DAY2-MySQL专业安装
MySQL安装 安装方法: 1.源码 2.二进制 (建议使用) 3.rpm (尽量不用) 一.下载MySQL: 一定要从官网下载,防止被勒索. 官网: http://dev/mysql.com 版本: ...
- springMVC框架在js中使用window.location.href请求url时IE不兼容问题解决
是使用springMVC框架时,有时候需要在js中使用window.location.href来请求url,比如下面的路径: window.location.href = 'forecast/down ...
- python assert的作用
使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...
- python日期格式化操作
1.将字符串的时间转换为时间戳 方法: a = "2013-10-10 23:40:00" #将其转换为时间数组 import time timeArray = time.strp ...
- Selenium库,Python精品教程!
什么是Selenium selenium基本使用 用python写爬虫的时候,主要用的是selenium的Webdriver,我们可以通过下面的方式先看看Selenium.Webdriver支持哪些浏 ...
- JFree图表
************************************************************************************* 使用JFree生成统计图片, ...