小美将自己朋友的名字写在了一块,惊讶地发现她写出的那个字符串S 有一个惊人的性质:一个人是小美的朋友当且仅当她/ 他的名字是那个字符串的子序列。现在小团想根据那个字符串判断一个人是不是小美的朋友。        * 子序列:一个字符串A 是另外一个字符串B 的子序列,当且仅当可以通过在B 中删除若干个字符(也可能一个都不删),其他字符保留原来顺序,使得形成的新字符串B’ 与A 串相等。例如,ABC 是AABDDC 的子序列,而ACB 不是AABDDC 的子序列。-笔试面试资料

这是qklbishe.com第7205 篇笔试面试资料
提供答案分析,通过本文《       小美将自己朋友的名字写在了一块,惊讶地发现她写出的那个字符串S 有一个惊人的性质:一个人是小美的朋友当且仅当她/ 他的名字是那个字符串的子序列。现在小团想根据那个字符串判断一个人是不是小美的朋友。        * 子序列:一个字符串A 是另外一个字符串B 的子序列,当且仅当可以通过在B 中删除若干个字符(也可能一个都不删),其他字符保留原来顺序,使得形成的新字符串B’ 与A 串相等。例如,ABC 是AABDDC 的子序列,而ACB 不是AABDDC 的子序列。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

       小美将自己朋友的名字写在了一块,惊讶地发现她写出的那个字符串S有一个惊人的性质:一个人是小美的朋友当且仅当她/他的名字是那个字符串的子序列。现在小团想根据那个字符串判断一个人是不是小美的朋友。

       *子序列:一个字符串A是另外一个字符串B的子序列,当且仅当可以通过在B中删除若干个字符(也可能一个都不删),其他字符保留原来顺序,使得形成的新字符串B’A串相等。例如,ABCAABDDC的子序列,而ACB不是AABDDC的子序列。

         小美将自己朋友的名字写在了一块,惊讶地发现她写出的那个字符串S 有一个惊人的性质:一个人是小美的朋友当且仅当她/ 他的名字是那个字符串的子序列。现在小团想根据那个字符串判断一个人是不是小美的朋友。               * 子序列:一个字符串A 是另外一个字符串B 的子序列,当且仅当可以通过在B 中删除若干个字符(也可能一个都不删),其他字符保留原来顺序,使得形成的新字符串B’ 与A 串相等。例如,ABC 是AABDDC 的子序列,而ACB 不是AABDDC 的子序列。 零葬
这性质有什么好惊人的,名字全写一起不就会这样吗         小美将自己朋友的名字写在了一块,惊讶地发现她写出的那个字符串S 有一个惊人的性质:一个人是小美的朋友当且仅当她/ 他的名字是那个字符串的子序列。现在小团想根据那个字符串判断一个人是不是小美的朋友。               * 子序列:一个字符串A 是另外一个字符串B 的子序列,当且仅当可以通过在B 中删除若干个字符(也可能一个都不删),其他字符保留原来顺序,使得形成的新字符串B’ 与A 串相等。例如,ABC 是AABDDC 的子序列,而ACB 不是AABDDC 的子序列。
言归正传,从左往右遍历一遍S字符串就可以了,从T的第一个字符开始,在遍历S时检查当前字符是否与T的第一个字符相等。如果相等,T就跳到第二个字符,马上更新一下字符的位置之和,以保证和为最小;S接着向后遍历,直到与T的第二个字符相等,T再跳到下一个字符,并更新此时字符的位置之和……
S的遍历结束后,如果T中所有的字符都在S中找到了,即指针指到了T.length(),就输出Yes和位置之和;否则此时T字符串的指针应该还没有指到T.length(),输出No。
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException;  public class Main {     public static void main(String[] args) throws IOException {         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));         String[] params = br.readLine().trim().split(" ");         int n = Integer.parseInt(params[0]);         int m = Integer.parseInt(params[1]);         String S = br.readLine().trim();         String T = br.readLine().trim();         int j = 0;         long posSum = 0;         for(int i = 0; i < n; i++){             if(S.charAt(i) == T.charAt(j)){                 j++;                 posSum += i + 1;             }         }         if(j == T.length()){             System.out.println("Yes");             System.out.println(posSum);         }else{             System.out.println("No");         }     } }

今天 12:06:27 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 »        小美将自己朋友的名字写在了一块,惊讶地发现她写出的那个字符串S 有一个惊人的性质:一个人是小美的朋友当且仅当她/ 他的名字是那个字符串的子序列。现在小团想根据那个字符串判断一个人是不是小美的朋友。        * 子序列:一个字符串A 是另外一个字符串B 的子序列,当且仅当可以通过在B 中删除若干个字符(也可能一个都不删),其他字符保留原来顺序,使得形成的新字符串B’ 与A 串相等。例如,ABC 是AABDDC 的子序列,而ACB 不是AABDDC 的子序列。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情