Sponsored
Sponsored
This approach builds a unique binary string by considering each string's diagonal to ensure uniqueness. Specifically, we take advantage of the fact that flipping a bit diagonally guarantees that it differs from the original set of strings across at least one position. For each string at index i
, we flip the character at the same index i
, ensuring that the constructed string cannot match any existing strings due to its diagonal differentiation.
Time Complexity: O(n)
since we iterate through the array once.
Space Complexity: O(n)
for storing the resulting binary string of length n
.
1public String findDifferentBinaryString(String[] nums) {
2 int n = nums.length;
3 char[] result = new char[n];
4 for (int i = 0; i < n; i++) {
5 result[i] = nums[i].charAt(i) == '0' ? '1' : '0';
6 }
7 return new String(result);
8}
The Java solution constructs a binary string by iterating over each index i
, checks the diagonal position nums[i][i]
, and flips the bit. It constructs the answer using a character array for efficiency.
This approach uses backtracking to generate all possible binary strings of length n
and checks for the first one not present in nums
. While not as efficient as diagonal construction, this method demonstrates a different strategy to ensure a solution's validity by exhaustive search.
Time Complexity: O(2^n)
due to generating every binary string of length n
.
Space Complexity: O(n)
for the call stack during recursion.
1using System;
2using System.Collections.Generic;
3
4public class Solution {
5 public string FindDifferentBinaryString(string[] nums) {
HashSet<string> set = new HashSet<string>(nums);
string result = string.Empty;
FindBinaryString(set, nums.Length, "", ref result);
return result;
}
private bool FindBinaryString(HashSet<string> set, int len, string current, ref string result) {
if (current.Length == len) {
if (!set.Contains(current)) {
result = current;
return true;
}
return false;
}
if (FindBinaryString(set, len, current + '0', ref result)) return true;
if (FindBinaryString(set, len, current + '1', ref result)) return true;
return false;
}
}
The C# solution employs a backtracking method to explore every binary string possibility. If a binary string of the required length isn't in nums
, it is identified as the result. The use of a recursive helper function facilitates generating possible candidates one bit at a time.