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. jQuery-ajax-天气接口

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. 如何创建一个 Cocoapods 插件

    原文链接 前言 我们在使用 Cocoapods 过程中,如果发现它未能满足我们的要求该怎么办呢? 最简单的粗暴的办法就是 fork 一份 Cocoapods 源码,然后自己公司内部或者个人直接针对源码 ...

  3. VS Code配置Python环境

    Visual Studio Code配置Python环境 目录 Visual Studio Code配置Python环境 1.安装Python环境 2.安装VS Code 2.1 下载 2.2 配置中 ...

  4. 不带头结点的单链表(基于c语言)

    本篇文章的代码大多使用无头结点的单链表: 相关定义: #include <stdio.h> #include <stdlib.h> #include <assert.h& ...

  5. python中判断为None

    python中经常会有判断一个变量是否为None的情况,这里列举三种方式: if not x if x is None if not x is None *********************** ...

  6. mysql innodb事务的ACID及其实现的保证机制

    MySQL事务的ACID,一致性是最终目的.保证一致性的措施有:A原子性:靠undo log来保证(异常或执行失败后进行回滚).D持久性:靠redo log来保证(保证当MySQL宕机或停电后,可以通 ...

  7. SQL 语言包括哪几部分?每部分都有哪些操作关键字?

    SQL 语言包括数据定义(DDL).数据操纵(DML),数据控制(DCL)和数据查询(DQL) 四个部分. 数据定义:Create Table,Alter Table,Drop Table, Crae ...

  8. ApplicationContext通常的实现是什么?

    FileSystemXmlApplicationContext :此容器从一个XML文件中加载beans的定义,XML Bean 配置文件的全路径名必须提供给它的构造函数. ClassPathXmlA ...

  9. JDBC 能否处理 Blob 和 Clob?

    Blob 是指二进制大对象(Binary Large Object),而 Clob 是指大字符对象 (Character Large Objec),因此其中 Blob 是为存储大的二进制数据而设计的, ...

  10. 基于CrawlSpider全栈数据爬取

    CrawlSpider就是爬虫类Spider的一个子类 使用流程 创建一个基于CrawlSpider的一个爬虫文件 :scrapy genspider -t crawl spider_name www ...