Нашёл вот такой код на C++. не понимаю 10 строку, как работает && в ней?
Вот код:
#include <iostream>
using namespace std;
void solve() {
int n, k;
cin >> n >> k;
string s;
cin >> s;
int ok = 1;
for (int i = 0; i < k; ++i)
ok = ok && s[i] == s[n - i - 1]; // вот тут не понимаю
puts(ok && k * 2 < n ? "YES" : "NO");
}
int main() {
int t; cin >> t;
while(t--) {
solve();
}
}
Ответы (3 шт):
Автор решения: dahoonpao
→ Ссылка
Тут идёт сравнение условий, то есть && - логическое И.
Условие будет верным если: ok = ok
(Тут скорее всего ошибка, идёт присваивание)
И условие s[i] == s[n - i - 1];
Автор решения: Harry
→ Ссылка
ok = ok && s[i] == s[n - i - 1]
Если ok
равно false
, то оно таковым и останется, если true
, то станет результатом сравнения s[i] == s[n - i - 1]
.
Правда, я бы его переписал как
if ((ok = ok && s[i] == s[n - i - 1]) == false) break;
Просто нет смысла проверять дальше, если ok
стало равно false
.
Автор решения: Superproger77
→ Ссылка
&& - логическое И, && - (конъюнкция, логическое умножение) Возвращает true, если оба операнда не равны false. Возвращает false, если хотя бы один операнд равен false.