一个关于字符串操作的算法题

最近在网上看到一道关于字符串操作的算法题,不过原题的表述以及给出的数据都有问题.这里我给出修正后的题目:

题目: 设计一个方法 String encode(String str),对字符串str进行如下转换操作为一个新字符串:

         逐个扫描str的每个字符,

         1.若当前字符为'_',则添加"\UL"到新字符串; 否则:

         2.若当前字符表示一大于0的数字N,且该字符不是最后一个字符,则将后继字符添加N+1次到新字符串;否则:

         3.直接添加当前字符到新字符串.

         并且用一个字符'_'将相邻的变换隔开

         并设计一个String decode(String code)方法执行encode的逆操作,即将由encode(str)方法返回的字符串还原为str.

       encode方法的设计没有任何难度,只需要把题目"直译"成程序代码就OK了,有难度的地方在于decode方法.注意到字符串中的字符在encode之后的新字符串中是由'_'分开的,并且原字符串中的每个字符只由这个字符串变换后的字符串以及其后继字符有关,因此我们很容易可以想到先将编码后的字符串按'_'分解成一系列字符串,其中每个字符串对应原字符串的一个字符,然后从后向前一个个求出其所表示的字符.算法的大体想法就是这样,只有一点要注意:类似"4_"这种数字后跟'_'的情形会被编码成一列连续的"_____",应该区分出这种情形并加以处理 .

       其实如果对压缩算法有所了解的话,很容易看出这个题目其实是行程编码( Run-Length Encoding )的一个变形.

下面给出本题的代码:

java 代码
  1. /**  
  2. *author: Eastsun  
  3. *version: 1.0 2007/8/1  
  4. */   
  5. import  java.util.Scanner;   
  6. public   class  StringCode{   
  7.      public   static   void  main(String[] args){   
  8.         Scanner s = new  Scanner(System.in);   
  9.          while ( true ){   
  10.             String text =s.next();   
  11.              if ( "exit" .equalsIgnoreCase(text))  break ;   
  12.             String code =encode(text);   
  13.              boolean  flags = true ;        //用于检测decode是否正确工作的标记   
  14.              try {   
  15.                  if (!decode(code).equals(text)) flags = false ;   
  16.             } catch (IllegalStateException e){   
  17.                 flags = false ;   
  18.             }   
  19.              if (flags){   
  20.                 System.out.println( "Code :"  +code);   
  21.             }   
  22.              else {   
  23.                 System.out.println( "Error code :"  +code);   
  24.             }   
  25.         }   
  26.     }   
  27.      private   static   final  String ESC_S =  "\\UL" ;   
  28.      private   static   final   char    ESC_C = '_';   
  29.        
  30.      /**  
  31.     *将编码后的字符串还原为原字符串  
  32.     *@throws IllegalStateException 如果参数str不是一个有效的编码字符串  
  33.     */   
  34.      public   static  String decode(String str) throws  IllegalStateException{   
  35.         StringBuilder sb = new  StringBuilder();   
  36.          char  next = 0xffff ;   
  37.          int  end =str.length(), start;   
  38.          while (end> 0 ){   
  39.              if (next==ESC_C&&str.charAt(end- 1 )==ESC_C){   
  40.                  for (start =end - 1 ;start> 0 &&str.charAt(start- 1 )==ESC_C;start--);   
  41.                  if (start!= 0 ) start ++;   
  42.             }   
  43.              else {   
  44.                 start =str.lastIndexOf(ESC_C,end - 1 ) + 1 ;   
  45.             }   
  46.                
  47.             String code =str.substring(start,end);   
  48.                
  49.              if (code.equals(ESC_S)){   
  50.                 next = ESC_C;   
  51.             }   
  52.              else   if (end-start== 1 ){   
  53.                 next = code.charAt( 0 );   
  54.             }   
  55.              else {   
  56.                  for ( int  index = 0 ;index
  57.                      if (code.charAt(index)!= next)  throw   new  IllegalStateException( "Illegal code: [" +start+ "," +end+ "]" );   
  58.                 next =( char )(' 0 '+end-start- 1 );   
  59.             }   
  60.             sb.insert( 0 ,next);   
  61.             end =start - 1 ;   
  62.         }   
  63.          return  sb.toString();   
  64.     }   
  65.        
  66.      /**  
  67.     * 将str编码为新的字符串  
  68.     */   
  69.      public   static  String encode(String str){   
  70.         StringBuilder sb = new  StringBuilder();   
  71.          for ( int  index = 0 ;index
  72.              char  c =str.charAt(index);   
  73.                
  74.              if (c==ESC_C){   
  75.                 sb.append(ESC_S);   
  76.             }   
  77.              else   if (c>' 0 '&&c<=' 9 '&&index+ 1
  78.                  char  next =str.charAt(index+ 1 );   
  79.                  for ( int  count =c-' 0 ';count>= 0 ;count--)    
  80.                     sb.append(next);   
  81.             }   
  82.              else {   
  83.                 sb.append(c);   
  84.             }   
  85.                
  86.              if (index+ 1
  87.         }   
  88.          return  sb.toString();   
  89.     }   
  90. }  
华为外包l两道面试算法题。 今日下午刚结束面试。一共两技术人员面的,一人出了一道算法题,记录下,并为以后做些准备,由于远程面试,所以没有代码测试,不知道行不行的通,且行且看吧。 1、输入为String 字母卡片(可以重复)和一个单词,问利用字母卡片是否能拼出单词。 事例:字母卡片“Zoos”,单词“Zoo” 答案是可以的输出true 如果单词是“Zoom” 输出为FALSE /*我一... 阅读详情

相关推荐

我的算法学习之路-算法题-回环变位

1.回环变位 算法(第四版)1.2.6题: 如果字符串s中的字符循环移动任意位置之后能够得到另一字符串t,那么s就被称为t的回环变位。例如,ACTGACG 就是 TGACGAC 的一个回环变位,反之亦然。判定这个条件在基因组序列中的研究是十分重要的。编写一个算法检查两个给定的字符串s和t是否互为回环变位。

我的博客 1126

一道面试题

1。若当前字符串非数字字符或为数字字符0,则复制改字符串于新字符串中 2。若已知字符串的当前字符串是一个数字字符,且它之后没有后继字符,则简单的将它复制倒新字符串中。3。若已知字符串的当前字符是一个大于0的数字字符,并且还有后继字符,设该数字字符的面值为N,则将   它的后继字符(包括后继字符是一个数字字符)重复复制N+1次到新字符串中。4。以上述一次变换为一组,在不同组之间另插一个下划线‘—’用...

iteye_357的博客 309

SageMath下载与安装

SageMath的下载与安装

旺旺的碎冰冰~的博客 7511

1053:幂字符串

写在前面的话:感觉自己挺水的,没一点进步,但是猛然点开山建的水题,一种自豪感油然而生,有木有!!!!     1053:幂字符串分数: 2 时间限制:1 秒 内存限制:32 兆 特殊判题: 否 提交:1 解决: 1 题目描述 给你一个字符串,请你判断将此字符串转化成a^n形式的最大的n是多少。 例如:abcd=(abcd)^1,则n=1;

u013246297的专栏 1605

从零到一:STM32 CubeMX与WS2812B的DMA驱动艺术

本文详细介绍了如何使用STM32 CubeMX和DMA技术驱动WS2812B RGB LED灯条,从硬件设计到软件实现的全过程。通过CubeMX配置定时器和DMA,实现高效的PWM波形生成与数据传输,解决传统GPIO控制资源占用高的问题。文章还提供了颜色编码、动画效果实现及常见问题解决方案,助力开发者快速掌握智能LED控制技术。

weixin_28278377的博客 980

【数据分析生命周期全揭秘】从零开始打造你的数据科学项目 | 最全指南

在当今数据驱动的世界中,数据科学正在颠覆传统行业,成为企业决策和价值创造的重要引擎。然而,如何科学、系统地开展一个数据分析项目?这是很多人关心的核心问题。本篇文章基于经典数据分析课程内容,深入解读数据分析生命周期的每个阶段,让你快速掌握从“发现问题”到“落地应用”的完整流程。如果你正在学习或准备从事数据分析领域,这篇文章一定会对你大有帮助!数据分析生命周期的六大阶段数据分析生命周期的六个阶段相辅相成,每个阶段都至关重要:发现问题:明确需求,提出假设。数据准备:清洗、转换和可视化数据。

AI手套的博客 1743

(1)若当前字符不是大于0的数字字符,则复制该字符于新字符串中; (2)若当前字符是一个数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中; (3)若当前字符是一个大于0的数字字符,并且还有...

package b; import java.util.Scanner; public class Zifuchuan { public static void main(String[] args) { System.out.println("输入字符串:"); Scanner zifu=new Scanner(Syst...

a771454823的博客 688

引入 CloudWeGo 后飞书管理后台平台化改造的演进史

飞书管理后台是飞书套件专为企业管理员提供的信息管理平台,它通过引入 Kitex 泛化调用对飞书管理后台进行平台化改造,成为了企业统一数字化管理平台。本文将从三个方面为大家讲解 Kitex 泛化调用在飞书管理后台平台化改造过程中的落地实践。...

weixin_44186218的博客 1765

c++求幂字符串,求字符串转化成a^n形式的最大的n是多少。

解题思路:首先思考如何进行解题,首先输入一个字符串,来求它的幂,那么就可以指定两个string类型的变量比如a,b来接受我们截取的字符串,可以通过循环来截取字符串,定义一个整型k=1,表示截取字符串的位数,首先可以截取字符串的第一个字符放在a中,然后在套用一个循环来截取字符串放在b中,然后加上一个计数器count=0 如果a=b 则count++ 如果a!=b 就退出循环然后k++,下一次来截取两个字符串,如此往复,代码如下。给你一个字符串,请你判断将此字符串转化成a^n形式的最大的n是多少。

s3088784247的博客 535

告别零散脚本:用Playwright+Pytest+Yaml+Allure搭建可维护的UI自动化项目

UI自动化测试是软件质量保障的关键环节,其核心在于模拟用户操作,对Web应用界面进行功能验证。传统的脚本堆砌方式常因代码耦合度高、维护成本大而难以为继。工程化解决方案通过分离关注点,将测试逻辑、数据和配置解耦,从而显著提升项目的可读性、可维护性和可扩展性。其技术价值在于构建可持续运行的自动化资产,而非一次性脚本。典型的应用场景包括Web应用的回归测试、兼容性测试及CI/CD流水线中的质量门禁。本文以Playwright、Pytest、Yaml和Allure为核心技术栈,详细阐述了如何从项目架构、页面对象模型

weixin_42529328的博客 301

Python数据爬取超详细讲解(零基础入门,老年人都看的懂)

Python数据爬取超详细讲解(零基础入门,老年人都看的懂)

python03011的博客 3754

对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。 在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符('\t')、回车符('\r')、换行符(

字符串倒序输出,单词不倒序 题目 对字符串中的所有单词进行倒排。 说明: 1、每个单词是以26个大写或小写英文字母构成,可能含有非法字符 2、非构成单词的字符均视为单词间隔符; 3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符; 4、每个单词最长20个字母; 第一种方法 思路解析 1.我们可以采用正则表达式把字符串分隔成为字符串...

weixin_40904578的博客 1814

OpenCV函数用法之calibrateCamera

参考链接:opencv中标定函数calibrateCamera_ychl87的专栏-优快云博客 世界坐标系的三维点投影到成像坐标系中的二维点的投影公式如下: 其中(X,Y,Z)为世界坐标系中的三维点; (u,v)为成像面坐标系中的二维点; A为相机的内参数矩阵:(cx,cy)为主光轴点,一般为图像的中心;fx和fy为焦距; [R|t]为相机的外参数矩阵:R为旋转矩阵,t为位移矩阵; 上述公式的简单推理过程如下 考虑到镜头畸变 其中,k1,k2,k3,k4,k5和k6为径向畸变,p1和.

tiger&sheep的博客 3万+

leetcode 算法题796 (简单207) 旋转字符串

leetcode 算法题796 (简单207) 旋转字符串 题目介绍 给定两个字符串, A 和 B。 A 的旋转操作就是将 A 最左边的字符移动到最右边。  例如, 若 A = 'abcde', 在移动一次之后结果就是'bcdea' 。 如果在若干次旋转操作之后,A 能变成B,那么返回True。 示例 示...

FYuu95100的博客 231

Android HWC硬件合成器实战:从SurfaceFlinger到显示驱动的完整流程解析

本文深入解析Android HWC硬件合成器从SurfaceFlinger到显示驱动的完整流程,揭示HWC如何优化图形性能并降低功耗。通过实战案例和调试技巧,帮助开发者掌握硬件加速的图层混合技术,提升移动设备的显示效率。

gaochao的博客 495

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

腾讯面试算法题:输入一个字符串再输出其解压后的字符串

1.题目要求 输入:HG[3|B[2|CA]]F 输出:HGBCACABCACABCACAF 2.解体思路 使用栈来解决“[]”的层次调用,一个栈保存压缩时的次数,另一个栈来保存压缩的字符串。 遍历输入的字符串,根据栈是否为空,和根据当前不同字符的种类进行不同的操作。字母、数字、[、]、|五种情况。 3.解题代码 #include<iostream> #include<strin...

yishi_c的博客 952

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

力扣算法题:1370. 上升下降字符串

力扣算法题:1370. 上升下降字符串 给你一个字符串 s ,请你根据下面的算法重新构造字符串: 从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。 从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。 重复步骤 2 ,直到你没法从 s 中选择字符。 从 s 中选出 最大 的字符,将它 接在 结果字符串的后面。 从 s 剩余字符中选出 最大 的字符,且该字符比上一个添加的字符小,将它 接在 结果字符串后面。 重复步骤 5 ,直到你没法从 s 中选择字符。

软软的铲屎官的博客 170

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

判断字符串_算法题——[leetcode1657]判断两个字符串相近

Medium级别的题:定义两个字符串相近,如果你可以经过如下两种操作把一个变为另外一个。交换任意两个存在在的字符。如abcde交换b和e后可以变为aecdb对于两个存在的字符,把一个字符和另外一个字符所有出现对调。例如aacabb对调a和b后,变为bbcbaa你可以用这两个操作任意多次,而且可以在任何一个串进行。给定两个字符串,问它们是否相近。数据范围:两个串都只由小写英文字母组成,...

weixin_30359265的博客 133

【力扣算法题】字符交换使两字符串相等

【力扣算法题】字符交换使两字符串相等

qq_44671773的博客 1486

DAY50 || 115.不同的子序列 |583. 两个字符串的删除操作 | 72. 编辑距离 | 编辑距离总结篇

给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)题目数据保证答案符合 32 位带符号整数范围。

2301_79865280的博客 1238

1702. 修改后的最大二进制字符串

0这道题目通过两个互相配合的字符串替换操作,将多个连续的0“消化”成一个0,并将字符串中尽可能多的字符变成1,同时让0尽可能靠后,最后形成的字符串保证了二进制值最大。重点在于理解两种操作的本质和相互配合的效果。利用字符串特征(第一个0的位置和0的数量)精确计算最终0的位置。代码实现简洁,时间复杂度线性,非常高效。

Lucy_wzw的博客 682

NYOJ +-字符串

+-字符串 题目描述 Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。 输入 多组测试数据 每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。 输出 仅一个

YOONGI 213

代码随想录算法训练营第九天|leetcode151.翻转字符串里的单词、卡码网55.右旋字符串、leetcode28.找出字符串中第一个匹配项的下标、leetcode459. 重复的子字符串

自己的思路:直接将空格去掉,然后分割字符串为列表,在列表中进行翻转,不在字符串内部操作,因为字符串不可以操作。

angela3264的博客 863

【JAVA算法题】给定字符串 s 找到出现1次的字符,如果有多个只取第一个,如果没有返回空格

给定字符串 s 找到出现1次的字符,如果有多个只取第一个,如果没有返回空格

weixin_43515260的博客 668

算法题之有效括号问题

算法题之有效括号问题 题目描述 思路分析 思路图解 代码实现 public boolean isValid(String s) { //首先对s进行判断:(1)若s为空或者null,则表示有效字符串(2)若s的长度为奇数,则不可能满足要求,直接返回false if (s == null || s.length() == 0) return true; if (s.length() % 2 == 1) return false; //首先

qq_22993855的博客 399

PAT题解——Basic Level——1093字符串A+B

链接 https://pintia.cn/problem-sets/994805260223102976/problems/1071785884776722432 题面 给定两个字符串 A 和 B,本题要求你输出 A+B,即两个字符串的并集。要求先输出 A,再输出 B,但重复的字符必须被剔除。 输入格式 输入在两行中分别给出 A 和 B,均为长度不超过 10​^6​​的、由可见 ASCI...

努力中的老周的专栏 7509
上一篇: 二维点集的凸包及其直径(1)
下一篇: 《程序员》2007第八期之算法擂台
JavaSxy
博客等级 码龄21年 1粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值