字符数组

String字符串

萝らか妹 提交于 2019-11-27 02:37:13
String不可变性 Java 8 中,String 使用 char 数组存储数据 public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char[] value; } Java 9 中,String 类改用 byte 数组存储字符串,同时用 coder 来标识使用哪种编码 public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final byte[] value; private final byte coder; } String 是一个 final 类,意味着它不可以被继承,并且存储数据的 value 数组也被声明为 final,意味着 value 数组初始化后不能再引用其他数组,再加上 String 内部没有更改 value 数组数据的方法,所以 String 不可变。 public static void main(String[] args) { String s1 = "abc"; //不可变,意味着s1数据不能更改,所以下列过程是重新创建一个新对象赋给s1

Java学习笔记一

故事扮演 提交于 2019-11-26 23:31:01
字符串 字符串与基本数据的相互转化 基本数据转字符串 1. 基本数据 + ”” 就是字符串 2.String.valueOf( 基本数据 ); 3. 使用包装类的 toString(); String str=Integer.toString(a); 字符串转基本数据 1. 使用基本数据类型包装类的 pa rse***(str); int a=Integer.parseInt(str); 2. 对应包装类的 valueOf(); 字符数组转字符串 char [] ch ={'a','b','c'}; // String st2=new String( ch ); byte 数组转字符串 byte [] by={97,98,99}; String st3= new String(by); System. out .println(st3); 字符串转字符数组 char [] cha1=new char [10]; // st =" abcdefc "; // // 将此字符串中的字符复制到目标字符数组中。 // st.getChars(1,5,cha1,0); 常用方法: 方法名 说明 equals ( Object anObject) 将此字符串与指定的对象比较。 charAt (int index) 返回指定索引的 char 价值。 concat ( String str)

js实现字符串去重和数组去重

女生的网名这么多〃 提交于 2019-11-26 23:00:21
https://blog.csdn.net/charles_tian/article/details/79938010 题目:实现一个函数,去除输入字符串中的重复字符。 题目:实现一个函数,去除输入数组中重复的元素。 我想这道题是大家经常遇见的吧,是不是好像每次遇到的时候又变的不会了?那是因为不够专注,当初学习的时候知识初浅的看了看答案的思路便不再关注了,这肯定不行,要想在程序员的道路上走的更远,必须得明白解这道题的原理和做法,用了哪些你不知道的方法,甚至是还要比较哪个方法更优,明白更优的这个方法的原理出自哪里,这样才能越走越远。 对于这样的题,网上已经有很多的答案了,这里我只是做个总结,多数部分属于转载,但是希望大家坚持看完,因为要着重理解思路和逻辑,这样才对大家有所帮助。 1)字符串去重 1.for遍历 主要思路:首先新建一个空的字符串,然后声明一个flag作为下文的条件判断,随后就开始for循环输入的字符串,在for循环里面给flag赋值为1,然后在for循环又for循环一次,里面的循环是循环新字符串里的字符,然后给出判断,如果相同,flag=0,且跳出循环,最后对flag进行判断,如果为1,表示循环的字符在新字符串里没有出现过,那么就将该字符添加到新字符串中;如果为0,则不进行处理,直接跳过,最后返回新字符串的值。 该方法不是很推荐,因为执行了两次遍历,比较消耗性能

找到第一个只出现一次的字符的位置

家住魔仙堡 提交于 2019-11-26 18:31:04
题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 。 分析: 1、若为空串,或者字符串长度大于10000或者小于1,返回 -1 。位置索引从 0 开始 。 如果从头开始让每一个字符都与其后面的字符相比较,当第一个出现一次的字符,就结束程序。但是这种 算法 的时间复杂度是 O(n^2),这明显不是好的解决方法。 方法:采用哈希表数据结构 1、 我们可以遍历统计每个字符在字符串中出现的次数,把它保存在数组中(哈希表由数组实现),可以利用哈希算法,让字符的 ASCII 码与数组的键值保持一定的关系,即算出每个字符的哈希码(在数组中的存储位置索引),数组的值用来保存次数,这样就形成 key-value 对,根据字符的 ASCII 值就可以找到它在数组中保存它出现的次数的位置。 2、 题目中是全部由字母组成,大写字母的 ASCII 码在 65-90 ,小写字母在 97-122 之间,一共有 52 个字母。 (1) 创建一个数组大小为 52 的数组,来保存每个字母出现的次数; (2) ASCII 码值与数组索引之间的关系, A ( ASCII 码 65 )保存在数组中 0 位置, 即大写字母的 ASCII 码(设为 m )与其在数组中的位置之间的关系: m-65 a( ASCII 码 97 ) 保存在数组中 26 位置,

POJ - 3294~Relevant Phrases of Annihilation SPOJ - PHRASES~Substrings POJ - 1226~POJ - 3450 ~ POJ - 3080 (后缀数组求解多个串的公共字串问题)

烈酒焚心 提交于 2019-11-26 18:17:14
多个字符串的相关问题 这类问题的一个常用做法是,先将所有的字符串连接起来, 然后求后缀数组 和 height 数组,再利用 height 数组进行求解。 这中间可能需要二分答案。 POJ - 3294 题意: 给出n个串,求至少出现在n/2+1个串中的最长公共子串 题解: (摘自罗穗骞的国家集训队论文): 将 n 个字符串连起来,中间用不相同的且没有出现在字符串中的字符隔开, 求后缀数组。 然后二分答案,用和LCP将后缀分成若干组,判断每组的后缀是否出现在不小于 k 个的原串中。 这个做法的时间复杂度为 O(nlogn)。 你需要用一个id数组,记录S串的每个位置对于这哪一个串,然后二分每次用vis数组标记,查看那几个串出现过。 1 #include <cstdio> 2 #include <cstring> 3 #include <queue> 4 #include <cmath> 5 #include <algorithm> 6 #include <set> 7 #include <iostream> 8 #include <map> 9 #include <stack> 10 #include <string> 11 #include <time.h> 12 #include <vector> 13 #define pi acos(-1.0) 14 #define eps

字符串

感情迁移 提交于 2019-11-26 17:25:40
#include <stdio.h> #include <stdlib.h> //在各种编程语言中,字符串的地位都十分重要,C语言中并没有提供“字符串”这个特定类型,而是以特殊字符数组的形式来存储和处理字符串, // 这种字符数组必须以空字符’\0’结尾,因此,也将这种特定字符数组称为C风格字符串,本节讨论字符串和字符串的一些处理函数。 // C风格字符串是字符数组的一种特例,这个“特”字体现在“以’\0’(空字符,null character)结尾 void main1(){ char *strB[100] = {"China is great!"}; //字符串数组的正确定义方式,大括号可以省略 char str[10]="calc"; //字符串常量,默认会在后面加 '\0'作为结束符,'\0'的ASCCI码为0,也就是 '\0'等价于ASCII码 0,'\0'不计入字符串的长度, // 注意ASCII码0不是数字0,数字0的ASCII码是48 //char str[4] = {'c','a','l','c'}; //无法按照%s输出calc,会继续往后读取数据 // char str[5] = {'c','a','l','c','\0'}; //按照%s正确输出calc,遇到'\0'就结束 // char str[5] = {'c','a','l','c','0'}; /

javascript基础案例解析

会有一股神秘感。 提交于 2019-11-26 17:25:23
学完了JavaScript基础部分,总结出一些基本案例,以备日后查看! 1、九九乘法口诀表:在控制台中输出九九乘法口诀表!代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>乘法口诀表</title> </head> <body> <script> for (var i =1; i<=9; i++) {  //i控制行 for (var j =1,str="";j<=i; j++) {  //j控制列 str +=j+"x"+i+"="+i*j+" "; } console.log(str); } </script> </body> </html> 2、水仙花数:所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身!代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>水仙花数</title> </head> <body> <script> for(var i=100; i<1000; i++) { var hundreds = parseInt(i/100);  //定义百位数变量,并赋值 var decade = parseInt(i/10%10);  //定义十位数变量,并赋值 var unit = (i%10)

kmp算法

人盡茶涼 提交于 2019-11-26 17:00:15
————————————————————时光点燃了少年的梦想....... 1. abcdef 的前缀:  a,   ab,   abc,   abcd,   abcde   (abcdef 可不是前缀哦!) abcdef 的后缀:  f,   ef,   def,   cdef,     bcdef,  (abcdef可不是后缀哦!) abcdef 的 前缀后缀最长公共元素长度 为  0         (因为其前缀与后缀没有相同的!) ababa的前缀:    a,  ab,  aba,  abab,   ababa的后缀:    a,  ba,  aba,  baba, ababa的 相同前缀后缀的最大长度 为:  3 ascesubluffy 的 prefix:      a,  as,  asc,  asce,  asces,  ascesu,  ascesub,  ascesubl,  ascesublu,  ascesubluf,  ascesubluff, asecesubluffy 的postfix:   y,  fy,   ffy,    uffy,  luffy,   bluffy,  ubluffy,   subluffy,   esubluffy,   cesubluffy,  scesubluffy, 长度为 len 的字符串的前缀与后缀的个数为 2*

华为机试题库 java

情到浓时终转凉″ 提交于 2019-11-26 16:33:31
1.程序实现目标: 输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果。 程序要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符。 2.程序实现目标:求一个整型数组中元素的平均值,并统计其中大于和小于此平均值的元素的个数。 程序要求:输入:整型数组中的元素个数及各个元素。 输出:整型数组中元素的平均值,大于和小于此平均值的元素的个数。 3、手动输入一个存储整数的数组,要求输出数组里面的2个最大值。 实例: 输入:1,2,5,9,84,3,2 输出:84,9 4、回文数字判断。 题目描述: 有这样一类数字,他们顺着看和倒着看是相同的数,例如:121,656,2332等,这样的数字就称为:回文数字。编写一个函数,判断某数字是否是回文数字。 要求实现方法: public String isPalindrome(String strIn); 【输入】strIn: 整数,以字符串表示; 【返回】true: 是回文数字; false: 不是回文数字; 【注意】只需要完成该函数功能 算法 ,中间不需要有任何IO的输入输出 5、要求:随机打印50个随机(4-10长度)的字符串,要求字符串包含的范围是所有的英文字母包含大小写和数字,按照编码顺序排序,每行打印4个,要求首字符对齐 6.手动输入一个字符串,仅限小写字母

ORG.APACHE.COMMONS.LANG3.STRINGUTILS中的STRINGUTILS常用方法

人盡茶涼 提交于 2019-11-26 13:06:03
https://my.oschina.net/funmo/blog/615202?p=1 public static void TestStr(){ //null 和 ""操作~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //判断是否Null 或者 "" 【不去空格】为空的标准是 str==null 或 str.length()==0 System.out.println(StringUtils.isEmpty(" ")); //false System.out.println(StringUtils.isEmpty(null)); System.out.println(StringUtils.isNotEmpty(null)); //判断是否null 或者 "" 【去空格】~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~System.out.println(StringUtils.isBlank(" ")); //true 只要是空白都为true System.out.println(StringUtils.isNotBlank(null)); //去空格.Null返回null~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ System.out.println(StringUtils.trim