精华内容
下载资源
问答
  • 问题比如下面这个字符串,我想要提取出VG Name这个字符串以及后面 /dev/vg00这个字符串,请问在java正则表达式里面什么好方法能够获取呢?对正则表达式用得不是很熟悉,所以想请高手指教下: VG Name /...
  • 时候我们可能会求两个字符串的交集,也就是找到两个字符串里面相同的元素,偶尔也会需要把一个字符串里的与另外的一个字符串重合的元素给删除掉,所以诞生了这篇文章。下面给出案例: 已知a,b两个字符串,字符串...

    用js求字符串交集和字符串相减结果

    有时候我们可能会求两个字符串的交集,也就是找到两个字符串里面相同的元素,偶尔也会需要把一个字符串里的与另外的一个字符串重合的元素给删除掉,所以诞生了这篇文章。下面给出案例:
    已知有a,b两个字符串,字符串都是由多个词语组成且中间有空格隔开,想要知道a,b字符串有哪些词语相同,并且把其中a字符串内a&b同时存在(即交集)的词语给删除掉,得到一个新的字符串。

    解题思路:
    1.先把字符串使用split()函数转变成数组
    2.再使用filter()函数求得交集
    3.使用splice()函数删除双重循环下相同的词语元素
    4.把交集和结果集输出到页面上

    先看效果图:
    在这里插入图片描述

    在这里插入图片描述

    核心代码如下:

    <script>
        // js如何获取textarea框中的值
        // textareaElement的value属性行,而innerHTML属性不行
        function trans() {
            //通过id获取dom对象
            var textarea_source = document.getElementById('textarea_source');
            var textarea_translate = document.getElementById('textarea_translate');
            var textarea_jiao = document.getElementById('textarea_jiao');
            var textarea_result = document.getElementById('textarea_result');
            //获取dom对象的字符串
            var textSourse = textarea_source.value;
            var textfocus = textarea_translate.value;
            //以空格分割字符串转变为a,b数组
            var a = textSourse.split(" ");
            var b = textfocus.split(" ");
            //求得a,b两个数组的交集
            var jiao = a.filter((val) => new Set(b).has(val));
            //判断是否需要继续运行下去,如果没有交集,终止程序
            if (jiao.length==0){
                //弹框提示
                alert('不存在交集,字符串无法相减')
                //终止程序
                return;
            }
            //输出交集
            textarea_jiao.innerHTML = jiao.join(' ');
            //字符串减法运算得到结果字符串数组
            var result_string = arrChange(a, b);
    
            //转换数组为字符串且替换非空字符输出结果集
            textarea_result.value = result_string.join(' ').replace(/\s+/g, ' ');
            //去重
            quchongstr();
        }
    
        /*数组相减的方法*/
        function arrChange(a, b) {
            for (var i = 0; i < b.length; i++) {
                for (var j = 0; j < a.length; j++) {
                    if (a[j] == b[i]) {//如果是id相同的,那么a[ j ].id == b[ i ].id
                        a.splice(j, 1);
                        j = j - 1;
                    }
                }
            }
            return a;
        }
        //去重的方法
        function quchongstr() {
            //通过id获取dom对象
            var textarea_translate = document.getElementById('textarea_result');
            //得到具体值
            var str = textarea_translate.value;
            //转换为数组
            var a = str.match(/\S+/g);//等价于str.split(/\s+/g)// \s空白符,\S非空白符
            //排序
            a.sort();
            //双重循环进行去重
            for (var i = a.length - 1; i > 0; i--) {
                if (a[i] == a[i - 1]) {
                    a.splice(i, 1);
                }
            }
            console.log('去重成功!');
            //数组转换成字符串
            var finalstr = a.join(" ");
            //输出字符串到页面上
            textarea_translate.value = finalstr;
        }
    </script>
    

    注释得十分详细,请直接看注释,下面是html代码:

    <!DOCTYPE html>
    <html lang="cn">
    
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
        <title>字符串求交集和相减的结果集-字符串工具集</title>
    
        <!-- Bootstrap -->
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
    
    
        <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->
        <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->
        <!--[if lt IE 9]>
          <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
          <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
        <![endif]-->
        <meta charset="UTF-8">
    
        <style>
            .my_title {
                /*width: 200px;*/
                margin: 50px 400px;
                font-size: 50px;
                text-align: center;
            }
    
            .my_part {
                margin: 35px;
            }
    
            h2 {
                text-align: center;
                font-size: 50px;
                font-weight: bold;
                font-family: 幼圆;
                margin: 50px 200px;
            }
    
            .my_content {
                margin: 20px;
                text-align: center;
            }
        </style>
    </head>
    
    <body>
        <article class="my_title">
            <div class="panel panel-primary">
                <div class="panel-heading">
                    <h3 class="panel-title">字符串工具集 2020年8月16日</h3>
                </div>
                <div class="panel-body">
                    <h2>字符串求交集和相减的结果集</h2>
                    <p class="lead" style='text-align: left;'>
                        已知有a,b两个字符串,字符串都是由多个词语组成且中间有空格隔开,想要知道a,b字符串有哪些词语相同,并且把其中a字符串内a&b同时存在(即交集)的词语给删除掉,得到一个新的字符串。</p>
                    <p class="lead" style="text-align: left;">
                        解题思路:<br>1.先把字符串使用split()函数转变成数组<br>2.再使用filter()函数求得交集<br>3.使用splice()函数删除双重循环下相同的词语元素<br>4.把交集和结果集输出到页面上
                    </p>
                </div>
            </div>
        </article>
        <article class="my_part">
            <div class="my_content">
                <div style="display: inline-block;">
                    <textarea name="my_source" id="textarea_source" placeholder="请输入被减字符串 a:" cols="120"
                        rows="15"></textarea>
                </div>
    
                <div style="display: inline-block;">
                    <textarea name="my_tanslate" id="textarea_translate" placeholder="请输入减字符串 b:" cols="120"
                        rows="15"></textarea>
                </div>
    
                <div style="display: inline-block;">
                    <textarea name="my_tanslate" id="textarea_jiao" placeholder="交集输出~" cols="120" rows="15"></textarea>
                </div>
    
                <div style="display: inline-block;">
                    <textarea name="my_tanslate" id="textarea_result" placeholder="结果集输出~" cols="120" rows="15"></textarea>
                </div>
                <br>
                <button type="button" class="btn btn-primary" id="myButton4" data-complete-text="Loading finished"
                    onclick="trans()">请点击我
                </button>
                <br>
    
            </div>
    
        </article>
    
    </body>
    【核心代码放置处】
    </html>
    

    需要使用请直接把核心代码替换html里面的末尾**【核心代码放置处】**既可

    展开全文
  • 从算法讲,什么方法能最快查出所有小字符串字母在大字符串里都? 比如,如果是下面两个字符串: String 1: ABCDEFGHLMNOPQRS String 2: DCGSRQPOM 答案true,所有在string2里字母...
    
    

    假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有?

    比如,如果是下面两个字符串:

    String 1: ABCDEFGHLMNOPQRS

    String 2: DCGSRQPOM

    答案是true,所有在string2里的字母string1也都有。如果是下面两个字符串:

    String 1: ABCDEFGHLMNOPQRS

    String 2: DCGSRQPOZ

    答案是false,因为第二个字符串里的Z字母不在第一个字符串里。

    对于这种操作一种幼稚的做法是轮询第二个字符串里的每个字母,看它是否同在第一个字符串里。从算法上讲,这需要O(n*m)次操作,其中n是string1的长度,m是string2的长度。就拿上面的例子来说,最坏的情况下将会有16*8 = 128次操作。

    一个稍微好一点的方案是先对这两个字符串的字母进行排序,然后同时对两个字串依次轮询。两个字串的排序需要(常规情况)O(m log m) + O(n log n)次操作,之后的线性扫描需要O(m+n)次操作。同样拿上面的字串做例子,将会需要16*4 + 8*3 = 88加上对两个字串线性扫描的16 + 8 = 24的操作。(随着字串长度的增长,你会发现这个算法的效果会越来越好)

    哈希方法,对第一个字串进行轮询,把其中的每个字母都放入一个Hashtable里(成本是O(n)或16次操作)。然后轮询第二个字串,在Hashtable里查询每个字母,看能否找到。如果找不到,说明没有匹配成功。这将消耗掉8次操作 —— 这样两项操作加起来一共只有24次。不错吧,比前面两种方案都要好。

    Guy的方案:假设我们有一个一定个数的字母组成字串 —— 我给每个字母分配一个素数,从2开始,往后类推。这样A将会是2,B将会是3,C将会是5,等等。现在我遍历第一个字串,把每个字母代表的素数相乘。你最终会得到一个很大的整数,对吧?然后 —— 轮询第二个字符串,用每个字母除它。如果除的结果有余数,这说明有不匹配的字母。如果整个过程中没有余数,你应该知道它是第一个字串恰好的子集了。“


    展开全文
  • 从算法讲,什么方法能最快查出所有小字符串字母在大字符串里都? 比如,如果是下面两个字符串: String 1: ABCDEFGHLMNOPQRS String 2: DCGSRQPOM 答案true,所有在string2里字母string1也都。如果...

    假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有?

    比如,如果是下面两个字符串:

    String 1: ABCDEFGHLMNOPQRS
    String 2: DCGSRQPOM

    答案是true,所有在string2里的字母string1也都有。如果是下面两个字符串:

    String 1: ABCDEFGHLMNOPQRS
    String 2: DCGSRQPOZ

    答案是false,因为第二个字符串里的Z字母不在第一个字符串里。

    1 常规的写法

    暴力破解

    一种幼稚的做法是轮询第二个字符串里的每个字母,看它是否同在第一个字符串里。从算法上讲,这需要O(n* m)次操作,其中n是string1的长度,m是string2的长度。就拿上面的例子来说,最坏的情况下将会有16*8 = 128次操作。

    排序后匹配

    一个稍微好一点的方案是先对这两个字符串的字母进行排序,然后同时对两个字串依次轮询。两个字串的排序需要(常规情况)O(m log m) + O(n log n)次操作,之后的线性扫描需要O(m+n)次操作。同样拿上面的字串做例子,将会需要164 + 83 = 88加上对两个字串线性扫描的16 + 8 = 24的操作。(随着字串长度的增长,你会发现这个算法的效果会越来越好)

    hashtable匹配

    最终,我告诉了他一个最佳的算法,只需要O(n+m)次操作。方法就是,对第一个字串进行轮询,把其中的每个字母都放入一个Hashtable里(成本是O(n)或16次操作)。然后轮询第二个字串,在Hashtable里查询每个字母,看能否找到。如果找不到,说明没有匹配成功。这将消耗掉8次操作 —— 这样两项操作加起来一共只有24次。不错吧,比前面两种方案都要好。

    2 有趣的灵魂

    ”如果这样呢 —— 假设我们有一个一定个数的字母组成字串 —— 我给每个字母分配一个素数,从2开始,往后类推。这样A将会是2,B将会是3,C将会是5,等等。现在我遍历第一个字串,把每个字母代表的素数相乘。你最终会得到一个很大的整数,对吧?然后 —— 轮询第二个字符串,用每个字母除它。如果除的结果有余数,这说明有不匹配的字母。如果整个过程中没有余数,你应该知道它是第一个字串恰好的子集了。这样不行吗?“

    以上来自:
    http://www.aqee.net/post/google-interviewing-story.html

    展开全文
  • 1、字符指针本身就是一个整型变量,用来存放指向某个字符串的地址,这个字符串存放在以这个地址为起始的一串的地址空间中,最后一位自动添加 '\0';字符数组用一个连续的空间来存放数值,最后并不会自动添加 '\0...
    我们都知道可以用数组还有指针来接收字符串,两者在存储字符串时还是有细微的差别的。下面来进行一下讨论,有不对的欢迎大家指正。

    1、字符指针本身就是一个整型变量,用来存放指向某个字符串的地址,这个字符串是存放在以这个地址为起始的一串的地址空间中,最后一位自动添加 '\0';字符数组是用一个连续的空间来存放数值,最后并不会自动添加 '\0'.

    2、字符串指针定义过程:

    可以在定义时候直接赋值:

    char * a = {"i am a girl"};

    也可以在定义之后再次赋值:

    char *a;
    a = (char *) malloc (sizeof(char) * 100);   
    a = "i am a girl";


    //一个字符串指针的例子,实现字符串反转
    
    char *a ;
    a = (char *) malloc (sizeof(char) * 100);  //定义一个指针,同时必须为它申请空间
    scanf("%s", a);
    int len = strlen(a);
    int i = 0, j = len - 1;
    char temp = '\0';
    while(i < j)    //本功能块实现两个字符的交换功能,因为是单个字符可以直接交换赋值,如果是字符串必须要使用strcpy()!
    {
           temp = a[i];
           a[i++] = a[j];
           a[j--] = temp;
    }
    printf("%s", a); //此处用a, 而不是*a,具体机制还没有弄明白  (?)



    3、字符数组定义过程:

    定义时直接赋值

    char a[100] = {'I', 'w', 'i', 't', '\0'};

     

    不可以定义之后再赋值!

    char a[100];
    char = {'i','am','a','girl','\0'};   //编译不通过!!


    4、几点注意:

    定义指针时,编译器并不为指针所指向的对象分配空间,它只是分配指针本身的空间,除非在定义的同时赋值给指针一个字符串常量进行初始化。例如:下面的定义创建了一个字符串常量(为其分配了内存):

           char *p=”abcdefg”;

           注意只有对字符串常量才是如此,不能指望为浮点数之类的常量分配空间,如:

           Float *p=3.14;  /*错误,无法通过编译*/

           需要这样定义,

           float e = 0.13;
           p = &e;

    下面谈谈初始化指针时创建的字符串常量与数组中的字符串的区别:

        在ANSI C中,初始化指针时所创建的字符串常量被定义为只读。如果试图通过指针修改这个字符串的值,程序就会出现未定义的行为。在有些编译器中,字符串常量被存放在只允许读取的文本段中,以防止它被修改。
        数组也可以用字符串常量进行初始化:

           Char a[]=”abcdefg”;

           如指针相反,由字符串常量初始化的数组是可以修改的。其中的单个字符在以后可以改变。

    在内存机制中的区别:

    #include<iostream>
    #include<vector>
    #include<string>
    using namespace std;
    
     int strlower(char *string)  
     {  
         if(string==NULL)  
        {  
            return -1;  
        }  
      
        while(*string)  
         {  
            if(isupper(*string))  
                 *string=tolower(*string);  
           string++;  
         }  
       *string='\0';  
        return 0;  
     }  
    
     
    int main(void)  
     {  
        char test[]="ABCDEFGhijklmN";  //编译通过
        char *test = "abcdfESD"; //编译不通过,不可以在程序中再修改常量
        strlower(test);  
        cout<<test<<endl;  
        system("pause");
     }
    


    展开全文
  • 实现字符串中子字符串的替换,看了几个用C实现的,都不对。其中几种情况:1.被替换的字符串比替换字符串长。2.替换的字符串比被替换的字符串长。好像指针都没有搞好,比较难实现。下面是用C++实现的。主要是两个...
  • C++ 字符串与字符数组 详解

    万次阅读 多人点赞 2018-03-03 19:28:22
    在C++中,两种类型的字符串表示形式: ...因此,一个以 null 结尾的字符串,包含了组成字符串的字符。 下面的声明和初始化创建了一个 “Hello” 字符串。由于在数组的末尾存储了空字符,所以...
  • 假设这一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串字母数相对少一些。从算法上讲,什么方法能最快查出所有小字符串字母在大字符串里都?  比如,如果是下面两个字符串: ...
  • 判断一个字符串里面字符都不相同。 解决思路 这个问题很多种解决方案,并且可以根据字符串字符集不同,可以做不同优化。有下面几种解决问题思路 遍历字符串字符与字符串其他字符比较。 ...
  • Golang 字符和字符串的区别

    千次阅读 2020-08-02 18:59:29
    关于字符与字符串的区别: 字符: 单引号 往往只包含一个字符, 转义字符除外: \n 字符串: 双引号 字符串一个或者多个字符组成 字符串都隐藏了一个结束符: \0 下面通过代码来看一下两者的区别: package main ...
  • IE兼容模式下面,js中json字符串不能多余逗号。 例如下面是不允许 var json = {  name: 'test' }
  • 有些字符串是我们存储某种类型名称,往往逗号‘,'或者其他符号来分隔。如果我们删除某一个参数时,往往没有数组或者列表那么方便。但是,如果下面这个方法,我们同样可以做好。public class Test3 {/*** @...
  • 字符串

    2016-11-14 16:58:57
    字符串一、字符串常量大家一定要记得”a”是字符串常量,而’a’是字符常量。 所谓字符串就是若干个字符常量组成以’\0’结尾的字符序列; 二、字符串的初始化 一般式: char str[6] = {'h', 'e', 'l', 'l', 'o'...
  • python中一次替换字符串多个字符

    万次阅读 多人点赞 2018-12-29 15:51:54
    比如下面给出的字符串a,字母、'(单引号)、\n(换行符)、数字、:(冒号)、,(逗号),目标只保留字符串数字和字母,且看我如何操作。 import re a='eew \' eawr,2 fd\n sa:21' b=re.sub(r'[\':\s ,...
  • 字符串数组 和 字符串指针 区别

    千次阅读 2016-12-02 23:29:36
    在C语言中,对字符串的操作主要两种方式,一使用字符数组,char str[];二使用字符指针。那么二者什么区别呢?下面将分述二者的使用,最后进行比较。 一、字符数组  使用char str[]定义一个...
  • 常见操作String的方法(截取子串,分割字符串,字符串的替换) ...调用时,括号中需要提取字符串的开始位置,方法的返回值要提取的字符串。例如: String str = "我爱 Java 编程"; String result = s
  • 1.输入框里面输入你想要一键替换的字符串,一般可能一些常用宏,比如我图片上一个宏定义,"Any"字样表示括号里面为任意字符串,你可以点击那个搜索图片选择其他含义东西. 2.在搜索图片的下面 一个"in ...
  • 在使用DataInputStream时候,经常会使用到readUTF来读取一段字符串,但是readUTF如何知道该字符串有多长呢? 下面的例子对DataInputStream简单使用: package s1; import java.io.BufferedInputStream; ...
  • 比如,如果是下面两个字符串: String 1: ABCDEFGHLMNOPQRS String 2: DCGSRQPOM 答案true,所有在string2里字母string1也都。   如果是下面两个字符串:  String 1: ABCDEFGHLMNOPQRS  String 2: ...
  • 这个算法应用的是递归的算法,开始担心如果字符串过长的话,会因递归引起栈的溢出,还好在网上查了一下,win32默认的递归栈大小是2M,这足以进行很长字符串的匹配。 下面是核心的代码,思路都在代码的注释中,下面...
  • 在日常工作中经常遇见在文本中提取特定位置字符串的需求.python的正则性能好,很适合做这类字符串的提取,这里讲一下提取的技巧,正则表达式的基础知识就不说了,兴趣的可以看re的教程. 提取一般分两种情况,一种提取...
  • 假设这一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串字母数相对少一些。从算法上讲,什么方法能最快查出所有小字符串字母在大字符串里都?  比如,如果是下面两个字符串: ...
  • 我们在编程当中,经常会遇到在操作数据库时,向表里插入带单引号的字符串。如果不作处理程序会报错,下面看看我们怎么处理它。用SQL语句往数据库某字段(字符型)中插入字符串,但是当该字符串中带单引号(')...
  • 字符串'\'特殊字符前面加转义符 我们常常会遇到这样问题,在输入框中输入包含特殊字符 \ 文本去搜索时候,我们输入的是什么样传给后台文本就是什么样,比如:输入 “我\” 或者 “我\我\\我...
  • Java截取字符串中某一段的字符串

    千次阅读 2019-05-31 11:25:00
    之前做了前端以layui为准的后台开发,因为做模糊查询的时候数据我根本不需要管,我只需要接受参数就行,但后台已经弄好的模糊代码,我的sql也没办法直接用这种的数据,所以我需要截取下面这一段...//根据字符串的i...
  • 下面是总结一些常见问题,以供大家参考 第一次出现重复字符 出现重复字符 出现字符串、字符还有次数 出现次数最多字符次数 class Eclass{ public static void main(String[] args) { String str = ...
  • 算法题:查找一个字符串中最长不含重复字符的子字符串,计算该最长子字符串的长度; 下面将使用 滑动窗口 方法实现,并通过对滑动窗口算法一步步进行优化,使其空间和时间的消耗一步步降低; 什么滑动窗口? ...
  • 本文纯属很多年以前在网上看到比较好东西,现在整理出来...从算法讲,什么方法能最快查出所有小字符串字母在大字符串里都?  比如,如果是下面两个字符串:  String 1: ABCDEFGHLMNOPQRS  St
  • 两种方法可以解决一种利用HashMap解决 另一种利用ASCII编码进行...给定一个长度,随机产生一个该长度的字符串,由大写小写字母以及数字组成 Java中随机数生成 题目 给定一个字符串,请输出这个字符串由...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,830
精华内容 5,932
关键字:

下面是字符串的有