# Seeking helps in explaination of syntax for var[x[n]]

Can someone help me to understand below syntax… thanks in advance.

``````class Solution {
public:
int lengthOfLongestSubstring(string s) {
const int n = s.length();
int ans = 0; //set a var as answer;
for(int i = 0; i < n; ++i){
vector <int> seen(128);
int j = i;
while(j < n && !seen[s[j]]) <----here
seen[s[j++]]=1;             <----here
ans=max(ans, j - i);        <----here
}
return ans;
}
};

``````

wasn’t sure what the syntax means `!seen[s[j]]`
same as this `seen[s[j++]]=1`
also don’t know why i can be subtracted by j…

### >Solution :

Case 1

``````s[j]
``````

The above means the element at index `j` of the string named `s`.

Case 2

``````seen[s[j]]
``````

The above means the element at index `s[j]` of variable named `seen`.

Case 3

``````seen[s[j++]]=1;
``````

For the above you have to know about the post-increment operator. So lets say we have:

``````int var = 0;
std::cout << var++ <<std::end; //this will print 0
``````

The `++` in `var++` means we are incrementing the value of `var` by 1 so that it now becomes 1, but `var++` returns the old value of the variable `var` which is why we get 0 as the output.

Now lets come back to:

``````seen[s[j++]]=1;
``````

The above means the element at index `s[j++]` of the variable named `seen`. But note `j++` will do 2 things: First it will increment `j` by 1 and second it will return the old value of `j`. So `s[j++]` essentially means the element at index `j` of the string named `s` meanwhile the value of `j` is also incremented by 1. Thus as a whole, you’re assigning a value of 1 to the element at index `s[j]` of the variable named `seen` meanwhile also increment the value of `j` by one.

why i can be subtracted by j

This is because the value of `j` is incremented by 1 inside the while loop.