欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java:比赛中常用方法整理——字符串(基础)

程序员文章站 2022-12-14 22:39:38
一.将字符串转化为字符数组: toCharArray返回一个字符数组。 二.字符串的长度 字符串的长度和字符数组的长度是不一'样'的. 字符串长度(字符串中的字符个数): 字符串的长度为5,且是一个方法length(); 字符数组的长度: 字符数组需要获取长度,是访问一个对象length。 三.字符 ......

一.将字符串转化为字符数组:

  tochararray返回一个字符数组。

char[] a=j.tochararray();

二.字符串的长度

字符串的长度和字符数组的长度是不一'样'的.

字符串长度(字符串中的字符个数):

1 string j="hello";
2 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 值。索引范围为从 0length() - 1。序列的第一个 char 值位于索引 0 处,第二个位于索引 1 处,依此类推,这类似于数组索引。 

 

五.将字符串转为大写或小写

tolowercase(locale locale) //使用默认语言环境的规则将此 string 中的所有字符都转换为小写。

touppercase() //使用默认语言环境的规则将此 string 中的所有字符都转换为大写。          

可以做一做leetcode上的一道简单题:

 

六.替换字符串的匹配的字串

replace(charsequence target, charsequence replacement) //使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。

replaceall就不介绍了,区别在这篇文章有详细介绍:

https://blog.csdn.net/anmoyyh/article/details/70673812

掌握这个方法就可以快速做一下这道题:

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。

给出两个整数 x 和 y,计算它们之间的汉明距离。

注意:
0 ≤ xy < 231.

示例:

输入: x = 1, y = 4

输出: 2

解释:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑

上面的箭头指出了对应二进制位不同的位置。

我的解法:

1 class solution {
2     public int hammingdistance(int x, int y) {
3         string str=integer.tostring(x^y,2);
4         return str.replace("0","").length();
5     }
6 }

 

七.字符串是否包含某些字符

contains(charsequence s) //当且仅当此字符串包含指定的 char 值序列时,返回 true。

 

551. 学生出勤记录 i

给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:

  1. 'a' : absent,缺勤
  2. 'l' : late,迟到
  3. 'p' : present,到场

如果一个学生的出勤记录中不超过一个'a'(缺勤)并且不超过两个连续的'l'(迟到),那么这个学生会被奖赏。

你需要根据这个学生的出勤记录判断他是否会被奖赏。

示例 1:

输入: "ppallp"
输出: true

示例 2:

输入: "ppalll"
输出: false

以下为我的解法:
 1 class solution {
 2     public boolean checkrecord(string s) {
 3        int a=0;
 4         if(s.contains("lll")){return false;}
 5         for(int i=0;i<s.length();i++){
 6             if(s.charat(i)=='a'){
 7                 a++;
 8             }
 9             if(a>1){return false;}
10         }
11         return true;
12         
13     }
14 }