牛客周赛:84:C:JAVA

发布于:2025-03-11 ⋅ 阅读:(16) ⋅ 点赞:(0)

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

\hspace{15pt}本题为《D.小红的陡峭值(三)》的简单版本,两题的唯一区别在于本题的数据范围更小。

\hspace{15pt}小红定义一个字符串的陡峭值为:每两个相邻字符,Ascii 码差值的绝对值之和。例如,"bca"\texttt{"bca"}"bca" 的陡峭值是 ∣‘c’−‘b’∣+∣‘a’−‘c’∣=1+2=3|\texttt{`c'}-\texttt{`b'}|+|\texttt{`a'}-\texttt{`c'}|=1 + 2 = 3∣‘c’−‘b’∣+∣‘a’−‘c’∣=1+2=3。
\hspace{15pt}现在小红拿到了一个长度为 nnn,仅由小写字母构成的字符串 sss。她希望你求出这个字符串所有长度为 kkk 的连续子串的陡峭值之和,你能帮帮她吗?

\hspace{15pt}连续子串为从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。

输入描述:

\hspace{15pt}第一行输入两个正整数 n,k(2≦k≦n≦103)n,k \left(2\leqq k\leqq n \leqq \pmb{10^3}\right)n,k(2≦k≦n≦103103103) 代表字符串的长度、子串的长度。
\hspace{15pt}第二行输入一个长度为 nnn,仅由小写字母组成的字符串 sss。

输出描述:

\hspace{15pt}输出一个整数,代表所有长度为 kkk 的连续子串的陡峭值之和。

示例1

输入

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n=scanner.nextInt();
        int k=scanner.nextInt();
        String s=scanner.next();
        char []c=s.toCharArray();
        int sum=0;
        for (int i = 0; i <=n-k ; i++) {
            for (int j =i+1; j <i+k ; j++) {
                sum+=Math.abs(c[j]-c[j-1]);
            }
        }
        System.out.println(sum);
    }
}
3 2
bca

输出

3

说明

\hspace{15pt}在这个样例中,全部长度为 222 的连续子串如下:
∙ \hspace{23pt}\bullet\,∙"bc"\texttt{"bc"}"bc",陡峭值为 ∣‘b’−‘c’∣=1|\texttt{`b'}-\texttt{`c'}|=1∣‘b’−‘c’∣=1;
∙ \hspace{23pt}\bullet\,∙"ca"\texttt{"ca"}"ca",陡峭值为 ∣‘c’−‘a’∣=2|\texttt{`c'}-\texttt{`a'}|=2∣‘c’−‘a’∣=2。
\hspace{15pt}因此,所有长度为 222 的连续子串的陡峭值之和为 1+2=31+2=31+2=3。