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. tensorflow源码解析之framework-shape_inference

    目录 什么是形状推断 InferenceContext 关系图 涉及的文件 迭代记录 1. 什么是形状推断 前面我们讲到op的时候,提到了操作的注册器OpRegistry,并且提到,其中注册的数据是一 ...

  2. Django基础三之路由、视图、模板

    Django基础三之路由.视图.模板 目录 Django基础三之路由.视图.模板 1. Django 请求和返回周期 1.1 路由层之路由匹配 1.2 有名分组 1.3 无名分组 2. 反射解析 3. ...

  3. LGP3703题解

    不会数据结构石锤了/kk 题意清晰. 我们看到 \(1\) 操作比较奇怪,考虑从 \(1\) 操作入手. 设 \(f_u\) 为 \(u\) 到根节点一共有多少种颜色,我们使用树剖来维护这个东西. 考 ...

  4. LGP4714题解

    没意思啊 题意:求 \(1^{k+2}(n)\),其中规定 \(1^k\) 在 \(k=1\) 时为 \(1\),在 \(2 \leq k\) 时为 \(1 * 1^{k-1}\)(* 为狄利克雷卷积 ...

  5. PEP小学五年级英语下册 mp3 音频和电子书

    链接:https://pan.baidu.com/s/1O805uHU-lsMKog3WLtjRkA 提取码:o8rg 链接:https://pan.baidu.com/s/1Oa4wcM5min83 ...

  6. [NOIP2013 普及组] 表达式求值

    [NOIP2013 普及组] 表达式求值 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值. Input 一行,为需要你计算的表达式,表达式中只包含数字.加法运算符"+" ...

  7. 获取bing首页的每日一图

    从必应(bing)首页抓取他的每日一图 以前上学时,曾经用python写过一个每天抓取bing每日一图的小工具. 现在想用java来重构一下. 抓取图片的思路 首先获取网页源码 从网页源码中,我们可以 ...

  8. Caffeine缓存详解

    概要 Caffeine是一个高性能,高命中率,低内存占用,near optimal 的本地缓存,简单来说它是 Guava Cache 的优化加强版,有些文章把 Caffeine 称为"新一代 ...

  9. [SPDK/NVMe存储技术分析]013 - libibverbs API应用案例分析

    本文是对论文Dissecting a Small InfiniBand Application Using the Verbs API所做的中英文对照翻译 Dissecting a Small Inf ...

  10. bat加mimikatz一键获取密码

    1 @echo off 2 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\sys ...