Я работаю над собственной версией String, и один из методов объекта должен быть в состоянии взять обычную строку и найти ее.Класс называется MyString и имеет две переменные-члены: длину строки, которую он содержит, и массив строки.Полный класс приведен ниже с методом, у меня возникают проблемы с последним отключением.
Единственный раз, когда метод indexOf не работает, это когда строка содержится в конце массива MyString,Я возвращаю -1 вместо индекса, где он должен быть найден.
Тестовые случаи: Инициализируйте MyString строкой "Trastamara".Если я найду слова «mara», «amara» или даже «Trastamara», которые заканчиваются последним символом строки, строка не будет найдена.
public class MyString {
private int length;
private char[] characters;
public MyString()
{
length = 0;
}
public MyString(String s)
{
length = s.length();
characters = new char[length];
for(int i = 0; i <length; i++)
{
characters[i] = s.charAt(i);
}
}
public int indexOf(String s)
{
char[] sa = s.toCharArray();
int lastIndex = length - s.length();
int convoluted=0;
for(int i=1; i<=lastIndex;i++)
{
if(convoluted==s.length())
{
return i-1;
} else convoluted=0;
for(int j=0, k=i; j<s.length(); j++, k++)
{
if(sa[j]==characters[k])
{
convoluted++;
}
}
}
return -1;
}