{ "data": { "question": { "questionId": "3580", "questionFrontendId": "3303", "boundTopicId": null, "title": "Find the Occurrence of First Almost Equal Substring", "titleSlug": "find-the-occurrence-of-first-almost-equal-substring", "content": "
You are given two strings s
and pattern
.
A string x
is called almost equal to y
if you can change at most one character in x
to make it identical to y
.
Return the smallest starting index of a substring in s
that is almost equal to pattern
. If no such index exists, return -1
.
\n
Example 1:
\n\nInput: s = "abcdefg", pattern = "bcdffg"
\n\nOutput: 1
\n\nExplanation:
\n\nThe substring s[1..6] == "bcdefg"
can be converted to "bcdffg"
by changing s[4]
to "f"
.
Example 2:
\n\nInput: s = "ababbababa", pattern = "bacaba"
\n\nOutput: 4
\n\nExplanation:
\n\nThe substring s[4..9] == "bababa"
can be converted to "bacaba"
by changing s[6]
to "c"
.
Example 3:
\n\nInput: s = "abcd", pattern = "dba"
\n\nOutput: -1
\nExample 4:
\n\nInput: s = "dde", pattern = "d"
\n\nOutput: 0
\n\n
Constraints:
\n\n1 <= pattern.length < s.length <= 105
s
and pattern
consist only of lowercase English letters.\nFollow-up: Could you solve the problem if at most
k
consecutive characters can be changed?",
"translatedTitle": null,
"translatedContent": null,
"isPaidOnly": false,
"difficulty": "Hard",
"likes": 45,
"dislikes": 5,
"isLiked": null,
"similarQuestions": "[{\"title\": \"Check Whether Two Strings are Almost Equivalent\", \"titleSlug\": \"check-whether-two-strings-are-almost-equivalent\", \"difficulty\": \"Easy\", \"translatedTitle\": null}, {\"title\": \"Count Almost Equal Pairs II\", \"titleSlug\": \"count-almost-equal-pairs-ii\", \"difficulty\": \"Hard\", \"translatedTitle\": null}]",
"exampleTestcases": "\"abcdefg\"\n\"bcdffg\"\n\"ababbababa\"\n\"bacaba\"\n\"abcd\"\n\"dba\"\n\"dde\"\n\"d\"",
"categoryTitle": "Algorithms",
"contributors": [],
"topicTags": [
{
"name": "String",
"slug": "string",
"translatedName": null,
"__typename": "TopicTagNode"
},
{
"name": "String Matching",
"slug": "string-matching",
"translatedName": null,
"__typename": "TopicTagNode"
}
],
"companyTagStats": null,
"codeSnippets": [
{
"lang": "C++",
"langSlug": "cpp",
"code": "class Solution {\npublic:\n int minStartingIndex(string s, string pattern) {\n \n }\n};",
"__typename": "CodeSnippetNode"
},
{
"lang": "Java",
"langSlug": "java",
"code": "class Solution {\n public int minStartingIndex(String s, String pattern) {\n \n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python",
"langSlug": "python",
"code": "class Solution(object):\n def minStartingIndex(self, s, pattern):\n \"\"\"\n :type s: str\n :type pattern: str\n :rtype: int\n \"\"\"\n ",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python3",
"langSlug": "python3",
"code": "class Solution:\n def minStartingIndex(self, s: str, pattern: str) -> int:\n ",
"__typename": "CodeSnippetNode"
},
{
"lang": "C",
"langSlug": "c",
"code": "int minStartingIndex(char* s, char* pattern) {\n \n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "C#",
"langSlug": "csharp",
"code": "public class Solution {\n public int MinStartingIndex(string s, string pattern) {\n \n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "JavaScript",
"langSlug": "javascript",
"code": "/**\n * @param {string} s\n * @param {string} pattern\n * @return {number}\n */\nvar minStartingIndex = function(s, pattern) {\n \n};",
"__typename": "CodeSnippetNode"
},
{
"lang": "TypeScript",
"langSlug": "typescript",
"code": "function minStartingIndex(s: string, pattern: string): number {\n \n};",
"__typename": "CodeSnippetNode"
},
{
"lang": "PHP",
"langSlug": "php",
"code": "class Solution {\n\n /**\n * @param String $s\n * @param String $pattern\n * @return Integer\n */\n function minStartingIndex($s, $pattern) {\n \n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Swift",
"langSlug": "swift",
"code": "class Solution {\n func minStartingIndex(_ s: String, _ pattern: String) -> Int {\n \n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Kotlin",
"langSlug": "kotlin",
"code": "class Solution {\n fun minStartingIndex(s: String, pattern: String): Int {\n \n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Dart",
"langSlug": "dart",
"code": "class Solution {\n int minStartingIndex(String s, String pattern) {\n \n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Go",
"langSlug": "golang",
"code": "func minStartingIndex(s string, pattern string) int {\n \n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Ruby",
"langSlug": "ruby",
"code": "# @param {String} s\n# @param {String} pattern\n# @return {Integer}\ndef min_starting_index(s, pattern)\n \nend",
"__typename": "CodeSnippetNode"
},
{
"lang": "Scala",
"langSlug": "scala",
"code": "object Solution {\n def minStartingIndex(s: String, pattern: String): Int = {\n \n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Rust",
"langSlug": "rust",
"code": "impl Solution {\n pub fn min_starting_index(s: String, pattern: String) -> i32 {\n \n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Racket",
"langSlug": "racket",
"code": "(define/contract (min-starting-index s pattern)\n (-> string? string? exact-integer?)\n )",
"__typename": "CodeSnippetNode"
},
{
"lang": "Erlang",
"langSlug": "erlang",
"code": "-spec min_starting_index(S :: unicode:unicode_binary(), Pattern :: unicode:unicode_binary()) -> integer().\nmin_starting_index(S, Pattern) ->\n .",
"__typename": "CodeSnippetNode"
},
{
"lang": "Elixir",
"langSlug": "elixir",
"code": "defmodule Solution do\n @spec min_starting_index(s :: String.t, pattern :: String.t) :: integer\n def min_starting_index(s, pattern) do\n \n end\nend",
"__typename": "CodeSnippetNode"
}
],
"stats": "{\"totalAccepted\": \"2.7K\", \"totalSubmission\": \"24.3K\", \"totalAcceptedRaw\": 2654, \"totalSubmissionRaw\": 24327, \"acRate\": \"10.9%\"}",
"hints": [
"Let dp1[i]
represent the maximum length of a substring of s
starting at index i
that is also a prefix of pattern
.",
"Let dp2[i]
represent the maximum length of a substring of s
ending at index i
that is also a suffix of pattern
.",
"Consider a window of size pattern.length
. If dp1[i] + i == i + pattern.length - 1 - dp2[i + pattern.length - 1]
, what does this signify?"
],
"solution": null,
"status": null,
"sampleTestCase": "\"abcdefg\"\n\"bcdffg\"",
"metaData": "{\n \"name\": \"minStartingIndex\",\n \"params\": [\n {\n \"name\": \"s\",\n \"type\": \"string\"\n },\n {\n \"type\": \"string\",\n \"name\": \"pattern\"\n }\n ],\n \"return\": {\n \"type\": \"integer\"\n }\n}",
"judgerAvailable": true,
"judgeType": "large",
"mysqlSchemas": [],
"enableRunCode": true,
"enableTestMode": false,
"enableDebugger": true,
"envInfo": "{\"cpp\": [\"C++\", \"Compiled with clang 17
using the latest C++ 23 standard, and libstdc++
provided by GCC 13.
Your code is compiled with level two optimization (-O2
). AddressSanitizer is also enabled to help detect out-of-bounds and use-after-free bugs.
Most standard library headers are already included automatically for your convenience.
\"], \"java\": [\"Java\", \"OpenJDK 21
. Using compile arguments: --enable-preview --release 21
Most standard library headers are already included automatically for your convenience.
\\r\\nIncludes Pair
class from https://docs.oracle.com/javase/8/javafx/api/javafx/util/Pair.html.
Python 2.7.12
.
Most libraries are already imported automatically for your convenience, such as array, bisect, collections. If you need more libraries, you can import it yourself.
\\r\\n\\r\\nFor Map/TreeMap data structure, you may use sortedcontainers library.
\\r\\n\\r\\nNote that Python 2.7 will not be maintained past 2020. For the latest Python, please choose Python3 instead.
\"], \"c\": [\"C\", \"Compiled with gcc 13
using the gnu11 standard.
Your code is compiled with level one optimization (-O2
). AddressSanitizer is also enabled to help detect out-of-bounds and use-after-free bugs.
Most standard library headers are already included automatically for your convenience.
\\r\\n\\r\\nFor hash table operations, you may use uthash. \\\"uthash.h\\\" is included by default. Below are some examples:
\\r\\n\\r\\n1. Adding an item to a hash.\\r\\n
\\r\\nstruct hash_entry {\\r\\n int id; /* we'll use this field as the key */\\r\\n char name[10];\\r\\n UT_hash_handle hh; /* makes this structure hashable */\\r\\n};\\r\\n\\r\\nstruct hash_entry *users = NULL;\\r\\n\\r\\nvoid add_user(struct hash_entry *s) {\\r\\n HASH_ADD_INT(users, id, s);\\r\\n}\\r\\n\\r\\n\\r\\n\\r\\n
2. Looking up an item in a hash:\\r\\n
\\r\\nstruct hash_entry *find_user(int user_id) {\\r\\n struct hash_entry *s;\\r\\n HASH_FIND_INT(users, &user_id, s);\\r\\n return s;\\r\\n}\\r\\n\\r\\n\\r\\n\\r\\n
3. Deleting an item in a hash:\\r\\n
\\r\\nvoid delete_user(struct hash_entry *user) {\\r\\n HASH_DEL(users, user); \\r\\n}\\r\\n\\r\\n\"], \"csharp\": [\"C#\", \"
C# 12 with .NET 8 runtime
\"], \"javascript\": [\"JavaScript\", \"Node.js 20.10.0
.
Your code is run with --harmony
flag, enabling new ES6 features.
lodash.js library is included by default.
\\r\\n\\r\\nFor Priority Queue / Queue data structures, you may use 5.4.0 version of datastructures-js/priority-queue and 4.2.3 version of datastructures-js/queue and 1.0.4 version of datastructures-js/deque.
\"], \"ruby\": [\"Ruby\", \"Ruby 3.2
Some common data structure implementations are provided in the Algorithms module: https://www.rubydoc.info/github/kanwei/algorithms/Algorithms
\"], \"swift\": [\"Swift\", \"Swift 5.10
.
You may use swift-algorithms 1.2.0 and swift-collections 1.1.0.
\"], \"golang\": [\"Go\", \"Go 1.23
Support https://pkg.go.dev/github.com/emirpasic/gods@v1.18.1 and https://pkg.go.dev/github.com/emirpasic/gods/v2@v2.0.0-alpha library.
\"], \"python3\": [\"Python3\", \"Python 3.11
.
Most libraries are already imported automatically for your convenience, such as array, bisect, collections. If you need more libraries, you can import it yourself.
\\r\\n\\r\\nFor Map/TreeMap data structure, you may use sortedcontainers library.
\"], \"scala\": [\"Scala\", \"Scala 3.3.1
.
Kotlin 1.9.0
.
We are using an experimental compiler provided by JetBrains.
\"], \"rust\": [\"Rust\", \"Rust 1.79.0
. Your code will be compiled with opt-level
2.
Supports rand v0.8 and regex\\u00a0v1 from crates.io
\"], \"php\": [\"PHP\", \"PHP 8.2
.
With bcmath module
\"], \"typescript\": [\"Typescript\", \"TypeScript 5.1.6, Node.js 20.10.0
.
Compile Options: --alwaysStrict --strictBindCallApply --strictFunctionTypes --target ES2022
Your code is run with --harmony
flag, enabling new ES2022 features.
lodash.js library is included by default.
\\r\\n\\r\\nFor Priority Queue / Queue data structures, you may use 5.4.0 version of datastructures-js/priority-queue and 4.2.3 version of datastructures-js/queue and 1.0.4 version of datastructures-js/deque.
\"], \"racket\": [\"Racket\", \"Racket CS v8.11
\\r\\n\\r\\nUsing #lang racket
Required data/gvector data/queue data/order data/heap
automatically for your convenience
Dart 3.2. You may use package collection
\\r\\n\\r\\nYour code will be run directly without compiling
\"]}", "libraryUrl": null, "adminUrl": null, "challengeQuestion": null, "__typename": "QuestionNode" } } }