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. 1. 企业级调度器LVS初识、工作模式详解

    想学习更多相关知识请看博主的个人博客 1. LVS官网 LVS 时全球最流程的四层负载均衡开源软件. LVS 官网:http://www.linuxvirtualserver.org/ 2.Linux ...

  2. kkFileView对接svn服务完成文件在线预览功能

    1.需求: 之前在公司内部搭建了svn服务器,给部门存放文档.视频,做成了一个文档服务器来用,随着视频文件太大,每次下载太慢 需要把文件在线打开查看 2.解决: kkFileView https:// ...

  3. CF802O题解

    太厉害啦,出题人究竟是怎么想到的. 首先这题很显然可以使用费用流:对于 \(i \leq j\),连接一条边 \((i,j+n)\),流量为 \(1\),费用为 \(a_i+b_j\).最后连接 \( ...

  4. CF498B题解

    咋黑色啊,这不是看到数据范围就去想 \(O(nT)\) 的做法吗? 然后仔细想想最靠谱的就是 DP. 设 \(dp[n][T]\) 表示听完第 \(n\) 首歌,总共听了 \(T\) 秒. 很明显有 ...

  5. Golang 基础之基础语法梳理 (三)

    大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第三章节 Golang 基础之基础语法梳理 (一) Gol ...

  6. 内网渗透----Linux信息收集整理

    一.基础信息收集 1.查看系统类型 cat /etc/issue cat /etc/*-release cat /etc/lsb-release cat /etc/redhat-release 2.内 ...

  7. 题解0007:小木棍(P1120)

    (错误记录) 题目链接:https://www.luogu.com.cn/problem/P1120 题目描述:几根同样长的木棍,小冥把它们随意砍成了n段: 然后他又吃饱了撑的想把木棍拼上: 但是这个 ...

  8. C# XML基础入门(XML文件内容增删改查清)

    前言: 最近对接了一个第三方的项目,该项目的数据传输格式是XML.由于工作多年只有之前在医疗行业的时候有接触过少量数据格式是XML的接口,之后就几乎没有接触过了.因此对于XML这块自己感觉还是有很多盲 ...

  9. 【freertos】004-任务创建与删除及其实现细节

    前言 后面都是已动态内存任务为例来分析. 注意: 由于当前学习是在linux上跑的freertos,对于freertos底层相关接口,从demo工程来看,都是posix标准相关. 鉴于freertos ...

  10. JSP有哪些动作?分别是什么?

    外JSP共有以下7种基本动作 jsp:include:在页面被请求的时候引入一个文件. jsp:useBean:寻找或者实例化一个JavaBean. jsp:setProperty:设置JavaBea ...