如何在Angular中实现与Python逻辑一致的字符串XOR异或运算
字符串异或(XOR)操作Angular完整实现
本实现完全对齐提供的Python版本逻辑:将两个字符串按最短长度对齐,同位置字符配对后对ASCII码执行异或运算,转换回字符后拼接为最终结果。
完整代码
import { Component, OnInit, VERSION } from '@angular/core'; @Component({ selector: 'my-app', templateUrl: './app.component.html', styleUrls: [ './app.component.css' ] }) export class AppComponent implements OnInit { name = 'Angular ' + VERSION.major; // 原有变量可按需保留或删除 array1 = [1, 7, 8, 8, 7]; array2 = ['r', 'u', 'm', 'a', 'n']; zip: any; ordValue: any; value: any; ngOnInit(): void { // 原有单字符异或测试代码 this.ordValue = this.ord('r') ^ this.ord('1'); console.log('单字符异或ASCII值:', this.ordValue); this.value = String.fromCharCode(this.ordValue); console.log('单字符异或结果:', this.value); // 多字符异或测试,和Python示例输入完全一致 const testStr1 = 'abcdefghijklmn'; const testStr2 = '12345'; const xorResult = this.sxor(testStr1, testStr2); console.log('多字符异或结果:', xorResult); // 输出结果为 ppppp,和Python实现一致 } // 原有获取字符ASCII码方法 ord(str: string) { return str.charCodeAt(0); } // 新增字符串异或核心方法 sxor(s1: string, s2: string): string { // 取两个字符串的最小长度,和Python zip()的截断逻辑完全对齐 const minLength = Math.min(s1.length, s2.length); const resultChars: string[] = []; for (let i = 0; i < minLength; i++) { // 逐位异或后转字符 const xorCode = s1.charCodeAt(i) ^ s2.charCodeAt(i); resultChars.push(String.fromCharCode(xorCode)); } return resultChars.join(''); } }
逻辑说明
- 核心方法
sxor完全复现Python版本的执行逻辑,仅处理两个字符串长度相同的共通部分,超出部分直接截断忽略 - 逐位取字符的ASCII码执行异或运算,运算结果转回字符后存入数组,最后一次性拼接为字符串,性能更优
- 测试用例输入和Python示例完全一致,输出结果均为
ppppp,验证实现正确性
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

