String与char数组与StringBuffer

  • 通常情况下遇到删除字符或者反转字符串时需要将String转为char数组或者StringBuffer

String与char数组

  • char [] stringArr = string.toCharArray();
  • char[] charArray = {'P','A','N','K','A','J'}; String str = new String(charArray);

StringBuffer常用方法

  • StringBuffer stb=new StringBuffer();//里面也能放char数组或者string
  • stb.appdend(char c)
  • stb.insert(int index, char c)
  • stb.delete(int start,int edn)
  • stb.deleteChatAt(int index)
  • stb.length()
  • stb.replace(int start, int end, String str)
  • stb.reverse()

Leetcode541-反转字符串二

  • 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
  • 如果剩余字符少于 k 个,则将剩余字符全部反转
  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样
  • 输入:s = "abcdefg", k = 2
  • 输出:"bacdfeg"
    public String reverseStr1(String s, int k) {
char[] c=s.toCharArray(); for(int i=0;i<s.length();i=i+2*k){
if((i+k)<=s.length()){
reverse(c,i,i+k-1);
}else{
int len=s.length()-i;
reverse(c,i,i+len-1);
}
} return new String(c);
} public static void reverse(char[] c,int left,int right){
while (left<right){
char temp = c[left];
c[left]=c[right];
c[right]=temp;
left++;
right--;
}
} public String reverseStr2(String s, int k) {
StringBuffer res=new StringBuffer();
for(int i=0;i<s.length();i=i+2*k){
if((i+k)<s.length()){
StringBuffer temp1=new StringBuffer(s.substring(i,i+k));
temp1.reverse();
res.append(temp1);
if((i+2*k)<s.length()){
res.append(s.substring(i+k,i+2*k));
}else{
int len=s.length()-(i+k);
res.append(s.substring(i+k,i+k+len));
}
}else{
int len=s.length()-i;
StringBuffer temp2=new StringBuffer(s.substring(i,i+len));
temp2.reverse();
res.append(temp2);
} } return new String(res);
}

Leetcode151-颠倒字符串中的单词

  • 给你一个字符串 s ,颠倒字符串中 单词 的顺序。
  • 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
  • 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
  • 注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
  • 输入:s = "the sky is blue"
  • 输出:"blue is sky the"
//string的trim以及+,charat要熟练使用
public class L151 {
public static String reverseWords1(String s) {
String trim = s.trim();
String result = new String();
String temp = new String();
for (int i = 0; i < trim.length(); i++) {
char c = trim.charAt(i);
if (c == ' ') {//遇到新的单词了
result = temp + " " + result;
temp = new String();
while (i + 1 < trim.length() && trim.charAt(i + 1) == ' ') {
i++;
}
} else {
temp = temp + c;
}
}
result = temp + " " + result;
result = result.trim();
return result;
} //方法二使用StringBuffer 效率更高
public String reverseWords2(String s) {
StringBuffer res=new StringBuffer();
LinkedList<Character> stack=new LinkedList(); for(int i=s.length()-1;i>=0;i--){
Character tempChar=s.charAt(i);
if(tempChar!=' '){
stack.addFirst(tempChar);
}else{
boolean flag=false;
while(!stack.isEmpty()){
flag=true;
res.append(stack.removeFirst());
}
if(flag==true){
res.append(" ");
//只有加过字母才需要加空格
//但是这里无法筛选调最后的空格
//一种方式是和上面一样使用trim
//另一种方法是在下面对其特殊处理
}
}
} //最后栈中的元素特殊处理
while(!stack.isEmpty()){
res.append(stack.removeFirst());
}
if (res.charAt(res.length() - 1)==' ') {
res.deleteCharAt(res.length() - 1);
}
return new String(res);
} public static void main(String[] args) {
String s = "aa bb cc";
String res = reverseWords1(s);
System.out.println(res);
}
}

Leetcode541/151之String与char数组与StringBuffer的更多相关文章

  1. PChar,PAnsiChar,String,AnsiString,Char数组,AnsiChar数组转换

    PChar,PAnsiChar,String,AnsiString,Char数组,AnsiChar数组之间的转换关系见下图 通过转换链,可以实现任意两个类型之间的互转.如PChar转PAnsiChar ...

  2. 【转】C# String 与 Char[] 数组 相互转换

    源地址:http://blog.csdn.net/razilfelix/article/details/52289663 string 转换成 Char[] string ss = "abc ...

  3. delphi char数组、string和Pchar的相互转换

    因为要调用windows的api或者给vc++写接口,很多地方都要用到pchar,现在将char数组.string和pchar之间的相互转换都列出来,都是网上找的资料,我总结一下,先直接上代码,再讲原 ...

  4. char数组与string转换

    1.char数组转string 有很多种方法: 假设c字符串定义为char ch[]="hello world!"; 1.向构造函数传入c字符串创建string对象: string ...

  5. Java基础之引用(String,char[],Integer)总结

    1.String的引用: 下列代码执行后的结果为: public class Test { public static void main(String[] args) { StringBuffer  ...

  6. string 与 char 的区别

    1.char是字符类型 2.string是字符串类型 虽然一字之差,但其本质是很大的. 1. char属于基础类型(C++),在C#中它属于值类型(Value Type).char类型的长度是固定的, ...

  7. Java基础之引用(String,char[],Integer)总结于牛客网的专项练习题

    1.String的引用: 下列代码执行后的结果为: public class Test { public static void main(String[] args) { StringBuffer ...

  8. 类型转换 String——》Char OR Char ——》String

    String转换为char 在Java中将String转换为char是非常简单的.1. 使用String.charAt(index)(返回值为char)可以得到String中某一指定位置的char.2 ...

  9. Delphi中的各种字符串、String、PChar、Char数组

    参考博客:http://www.cnblogs.com/pchmonster/archive/2011/12/14/2287686.html 其中的所有代码均在Delphi7下测试通过. Delphi ...

随机推荐

  1. CF809E题解

    给定一个排列 \(a_i\) 和一棵树,求: \[\frac 1 {n(n-1)}\sum_{i=1}^n\sum_{j=1}^n \varphi(a_i \times a_j) \times dis ...

  2. CF549G题解

    变菜了,一年前做这种题10min出结论,现在对着样例胡半天都没结果 首先考虑从判断无解入手. 定义两个位置 \((i,j)\),若 \(a[i]=a[j]+(j-i)\),则 \(i\) 和 \(j\ ...

  3. knative入门指南

    尽管Knative自2018年以来一直由社区维护,但最近一直有关于该项目的传言,因为谷歌最近将Knative提交给了云原生计算基金会(CNCF),作为一个孵化项目考虑. 太酷了!但Knative到底是 ...

  4. 高级IO模型之kqueue和epoll

    目录 简介 block IO和nonblocking IO IO多路复用和select poll epoll kqueue epoll和kqueue的优势 简介 任何一个程序都离不开IO,有些是很明显 ...

  5. maltego的基本使用

    首次使用maltego需要注册 注册网站:https://www.paterva.com/web7/buy/maltego-clients/maltego-ce.php 填写好点注册就行了 1. 打开 ...

  6. session 会话机制以及变量覆盖

    session会话机制介绍如下 http是无状态协议.服务器靠cookie和session来记住用户.$_SESSION 和 $_GET等一样,是超全局变量. 后台脚本里面会写: session() ...

  7. isro

    靶机准备 将下载的压缩文件解压,打开vmx文件即可 将网络模式设置为NAT 扫描获得ip:192.168.164.185 kali:192.168.164.137 netdiscover -r 192 ...

  8. 使用VS Code编译Marlin固件

    参考:https://marlinfw.org/docs/basics/install_platformio_vscode.html 前言 在阅读本文之前,您应该已经阅读了使用 PlatformIO ...

  9. const char * 组合理解

    1 . const char *ptr 从char *ptr 可以理解为指向字符常量的指针,ptr是一个指向char *的常量,*ptr的值为const,不能修改. 2. char const *pt ...

  10. Markdown初识及基本使用

    Markdown初识及基本使用 ​ 由Typora编写. 一.初识Markdown 允许人们使用易读易写的纯文本格式编写文档. 是一种轻量级标记语言 编写的文档可以导出 HTML .Word.图像.P ...