string - 通过恰好执行 K 个操作将字符串 S 转换为另一个字符串 T(添加到字符串 S 的末尾/从字符串 S 的末尾删除)

标签 string algorithm logic

我正在尝试解决一个问题。但我错过了一些角落案例。请帮我。问题陈述是:

您有一个由小写英文字母组成的字符串 S。您可以对 S 执行两种类型的操作:

  1. 在字符串末尾附加一个小写英文字母。
  2. 删除字符串中的最后一个字符。对空字符串执行此操作会生成空字符串。

给定一个整数 k 和两个字符串 st确定是否可以转换 s 通过对 s 执行 exactly kt

如果可能,打印Yes;否则打印No.

Examples 
Input           Output

hackerhappy     Yes
hackerrank
9

5 delete operations (h,a,p,p,y) and 4 append operations (r,a,n,k)

aba             Yes
aba
7

4 delete operations (delete on empty = empty) and 3 append operations

我这样试过(C语言):

int sl = strlen(s); int tl = strlen(t); int diffi=0;  

int i;
for(i=0;s[i]&&t[i]&&s[i]==t[i];i++); //going till matching
diffi=i;  

((sl-diffi+tl-diffi<=k)||(sl+tl<=k))?printf("Yes"):printf("No");

请帮我解决这个问题。

谢谢

最佳答案

您还需要将剩余的操作一分为二,因为您只需要添加和删除字母会浪费操作。

所以也许:

//c 语言 - 如果 s==t,strcmp(s,t) 返回 0。

if(strcmp(s,t))
    ((sl-diffi+tl-diffi<=k && (k-(sl-diffi+tl-diffi))%2==0)||(sl+tl<=k))?printf("Yes"):printf("No");
else 
   if(sl+tl<=k||k%2==0) printf("Yes"); else printf("No");

关于string - 通过恰好执行 K 个操作将字符串 S 转换为另一个字符串 T(添加到字符串 S 的末尾/从字符串 S 的末尾删除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40359892/

相关文章:

c - 在C中是否可以输入某种变量并同时将其与另一个变量进行比较?

java - 这两个程序的时间复杂度

java - 代码片段中的逻辑错误?

java - 验证范围

algorithm - 3D 最小二乘平面

php - 寻找加载器设计模式

matlab - 找不到错误: Matrix dimensions must agree

javascript - 从基于文本的内容中删除某些 html 标签

c - 为什么这个类似的函数不会抛出相同的错误?

asp.net - 删除 SQL 更新中 WHERE 之前的最后一个逗号