Я не уверен, о чем конкретно спрашивает оригинальный постер. Поскольку indexOf (...) и содержит (...) оба , вероятно, , используют циклы внутри, возможно, он ищет, возможно ли это вообще без цикла? Я могу думать о двух путях, одно из которых, конечно, будет повторением:
public boolean containsChar(String s, char search) {
if (s.length() == 0)
return false;
else
return s.charAt(0) == search || containsChar(s.substring(1), search);
}
Другой гораздо менее изящен, но полон ...:
/**
* Works for strings of up to 5 characters
*/
public boolean containsChar(String s, char search) {
if (s.length() > 5) throw IllegalArgumentException();
try {
if (s.charAt(0) == search) return true;
if (s.charAt(1) == search) return true;
if (s.charAt(2) == search) return true;
if (s.charAt(3) == search) return true;
if (s.charAt(4) == search) return true;
} catch (IndexOutOfBoundsException e) {
// this should never happen...
return false;
}
return false;
}
Количество строк растет, поскольку вам необходимо поддерживать более длинные и длинные строки, конечно. Но нет никаких петель / повторений вообще. Вы даже можете удалить проверку длины, если вы обеспокоены тем, что эта функция length () использует цикл.